大多數網站的內容都存在資料庫裡,使用者透過請求來存取內容。資料庫非常的快,有許多技巧能讓你優化資料庫的速度,使你不浪費伺服器的資源。在這篇文章中,我收錄了十個優化資料庫速度的技巧。
1、小心設計資料庫
第一個技巧也許看來理所當然,但事實上大部分資料庫的問題都來自於設計不好的資料庫結構。
譬如我曾經遇見過將客戶端資訊和支付資訊儲存在同一個資料庫列中的例子。對於系統和用資料庫的開發者來說,這很糟糕。
新建資料庫時,應將資訊儲存在不同的表裡,採用標準的命名方式,並採用主鍵。
來源: http://www.simple-talk.com/sql/database-administration/ten-common-database-design-mistakes/
2、清楚你需要優化的地方
2、清楚你需要最佳化的地方 查詢語句,清楚的知道這個語句的結果是非常有幫助的。採用EXPLAIN語句,你將獲得很多有用的信息,下面來看個例子:EXPLAIN SELECT * FROM ref_table,other_table WHERE ref_table.key_column=other_table.column;
SELECT * FROM wp_posts;
SELECT title, excerpt, author FROM wp_posts;
SELECT title, excerpt, author FROM wp_posts LIMIT 10;
foreach ($display_order as $id => $ordinal){ $sql = "UPDATE categories SET display_order = $ordinal WHERE id = $id"; mysql_query($sql); }
UPDATE categories SET display_order = CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHEN 3 THEN 5 END WHERE id IN (1,2,3)
SELECT a.id, (SELECT MAX(created) FROM posts WHERE author_id = a.id) AS latest_post FROM authors a
SELECT a.id, MAX(p.created) AS latest_post FROM authors a INNER JOIN posts p ON (a.id = p.author_id) GROUP BY a.id
#Full wildcard SELECT * FROM TABLE WHERE COLUMN LIKE '%hello%'; #Postfix wildcard SELECT * FROM TABLE WHERE COLUMN LIKE 'hello%'; #Prefix wildcard SELECT * FROM TABLE WHERE COLUMN LIKE '%hello';
SELECT * FROM a, b WHERE a.p = b.q or a.x = b.y;
可以在一个列上创建索引,也可以在多个列上创建。索引是一种数据结构,它将表中的一列或多列的值以特定的顺序组织起来。
下面的语句在Product表的Model列上创建索引。这个索引的名字叫作idxModel
CREATE INDEX idxModel ON Product (Model);
来源: http://www.sql-tutorial.com/sql-indexes-sql-tutorial/