MySQL優化1. 優化你的MySQL查詢緩存
在MySQL服務器上進行查詢,可以啟用高速查詢緩存。讓數據庫引擎在後台悄悄的處理是提高性能的最有效方法之一。當同一個查詢被執行多次時,如果結果是從緩存中提取,那是相當快的。
但主要的問題是,它是那麼容易被隱藏起來以至於我們大多數程序員會忽略它。在有些處理任務中,我們實際上是可以阻止查詢緩存工作的。
1. // query cache does NOT work
2. $r = MySQL_query("SELECT username FROM user WHERE signup_date >= CURDATE()");
3.
4. // query cache works!
5. $today = date("Y-m-d");
6. $r = MySQL_query("SELECT username FROM user WHERE signup_date >= '$today'");
7.
8. // query cache does NOT work
9. $r = MySQL_query("SELECT username FROM user WHERE signup_date >= CURDATE()");
10.
11. // query cache works!
12. $today = date("Y-m-d");
13. $r = MySQL_query("SELECT username FROM user WHERE signup_date >= '$today'");
MySQL優化2. 用EXPLAIN使你的SELECT查詢更加清晰
使用EXPLAIN關鍵字是另一個MySQL優化技巧,可以讓你了解MySQL正在進行什麼樣的查詢操作,這可以幫助你發現瓶頸的所在,並顯示出查詢或表結構在哪裡出了問題。
EXPLAIN查詢的結果,可以告訴你那些索引正在被引用,表是如何被掃描和排序的等等。
實現一個SELECT查詢(最好是比較復雜的一個,帶joins方式的),在裡面添加上你的關鍵詞解釋,在這裡我們可以使用PHPMyAdmin,他會告訴你表中的結果。舉例來說,假如當我在執行joins時,正忘記往一個索引中添加列,EXPLAIN能幫助我找到問題的所在。
MySQL優化3. 利用LIMIT 1取得唯一行
有時,當你要查詢一張表是,你知道自己只需要看一行。你可能會去的一條十分獨特的記錄,或者只是剛好檢查了任何存在的記錄數,他們都滿足了你的WHERE子句。
在這種情況下,增加一個LIMIT 1會令你的查詢更加有效。這樣數據庫引擎發現只有1後將停止掃描,而不是去掃描整個表或索引。
1. // do I have any users from Alabama?
2. // what NOT to do:
3. $r = MySQL_query("SELECT * FROM user WHERE state = 'Alabama'");
4. if (MySQL_num_rows($r) > 0) {
5. // ...
6. }
7. // much better:
8. $r = MySQL_query("SELECT 1 FROM user WHERE state = 'Alabama' LIMIT 1");
9. if (MySQL_num_rows($r) > 0) {
10. // ...
11. }
MySQL優化4. 索引中的檢索字段
索引不僅是主鍵或唯一鍵。如果你想搜索表中的任何列,你應該一直指向索引。
MySQL優化5. 保證連接的索引是相同的類型
如果應用程序中包含多個連接查詢,你需要確保你鏈接的列在兩邊的表上都被索引。這會影響MySQL如何優化內部聯接操作。
此外,加入的列,必須是同一類型。例如,你加入一個DECIMAL列,而同時加入另一個表中的int列,MySQL將無法使用其中至少一個指標。即使字符編碼必須同為字符串類型。
1. // looking for companIEs in my state
2. $r = MySQL_query("SELECT company_name FROM users
3. LEFT JOIN companies ON (users.state = companIEs.state)
4. WHERE users.id = $user_id");
5.
6. // both state columns should be indexed
7. // and they both should be the same type and character encoding
8. // or MySQL might do full table scans
MySQL 優化工具推薦:
MySQL Optimize Analysis Description:
—“一鍵優化”功能,可以優化本地/遠程需要優化的機器,將繁瑣的優化工作“傻瓜”式操作
—根據您的業務需求Step By Step優化的MySQL服務器參數,起到指引的作用,簡化用戶操作
—不可能完全記住MySQL中的300多個配置參數每個的作用,在配置管理時就可以知道每個參數的作用,起到指引的作用
—查看手冊或者去google還是比較繁瑣,輸入關鍵字檢索,很快就可以找到,配置信息的內容和參數
—通過web界面修改MySQL配置參數,簡化操作
—修改配置信息不需要重啟直接生效,可以反復修改,所見即所得,提高效率
—修改數據庫配置需要有一定的先決條件,現在只要打開一個浏覽器就可以
—根據機器、操作系統信息推薦需要配置優化的參數,起到指引的作用,簡化用戶操作
MySQL數據庫目前廣泛的應用在各種個人、商務系統中,各種技術都比較成熟。MySQL優化技巧和MySQL優化工具都需通過在互聯網上學習,並動手實踐。