優化的查詢語句
絕大多數情況下使用索引可以提高查詢的速度但如果SQL語句使用不恰當的話索引將無法發揮它應有的作用下面是應該注意的幾個方面首先最好是在相同類型的字段間進行比較的操作
在MySQL 版之前這甚至是一個必須的條件例如不能將一個建有索引的INT字段和BIGINT字段進行比較但是作為特殊的情況在CHAR類型的字段和VARCHAR類型字段的字段大小相同的時候可以將它們進行比較其次在建有索引的字段上盡量不要使用函數進行操作
例如在一個DATE類型的字段上使用YEAE()函數時將會使索引不能發揮應有的作用所以下面的兩個查詢雖然返回的結果一樣但後者要比前者快得多
SELECT * FROM order WHERE YEAR(OrderDate)<;
SELECT * FROM order WHERE OrderDate<
同樣的情形也會發生在對數值型字段進行計算的時候
SELECT * FROM inventory WHERE Amount/<;
SELECT * FROM inventory WHERE Amount<*;
上面的兩個查詢也是返回相同的結果但後面的查詢將比前面的一個快很多第三在搜索字符型字段時我們有時會使用 LIKE 關鍵字和通配符這種做法雖然簡單但卻也是以犧牲系統MySQL數據庫性能為代價的例如下面的查詢將會比較表中的每一條記錄
SELECT * FROM books
WHERE name like MySQL%
但是如果換用下面的查詢返回的結果一樣但速度就要快上很多
SELECT * FROM books
WHERE name>=MySQLand name<MySQM
最後應該注意避免在查詢中讓MySQL進行自動類型轉換因為轉換過程也會使索引變得不起作用
[] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/MySQL/201311/29750.html