絕大多數情況下,使用索引可以提高查詢的速度,但如果sql語句使用不恰當的話,索引將無法發揮它應有的作用。下面是應該注意的幾個方面。首先,最好是在相同型別的字段間進行比較的操作。在mysql 3.23版之前,這甚至是乙個必須的條件。例如不能將乙個建有索引的int欄位和bigint欄位進行比較;但是作為特殊的情況,在char型別的字段和varchar型別欄位的字段大小相同的時候,可以將它們進行比較。其次,在建有索引的字段上盡量不要使用函式進行操作。
例如,在乙個date型別的字段上使用yeae()函式時,將會使索引不能發揮應有的作用。所以,下面的兩個查詢雖然返回的結果一樣,但後者要比前者快得多。
select * from order where year(orderdate)<2001;
select * from order where orderdate<"2001-01-01";
同樣的情形也會發生在對數值型字段進行計算的時候:
select * from inventory where amount/7<24;
select * from inventory where amount<24*7;
上面的兩個查詢也是返回相同的結果,但後面的查詢將比前面的乙個快很多。第三,在搜尋字元型字段時,我們有時會使用 like 關鍵字和萬用字元,這種做法雖然簡單,但卻也是以犧牲系統效能為代價的。例如下面的查詢將會比較表中的每一條記錄。
select * from books
where name like "mysql%"
但是如果換用下面的查詢,返回的結果一樣,但速度就要快上很多:..
select * from books
where name>="mysql"and name<"mysqm"
最後,應該注意避免在查詢中讓mysql進行自動型別轉換,因為轉換過程也會使索引變得不起作用。
mysql 語句優化例項 MySQL 語句優化例項
優化 limit 分頁 執行耗時 1.379s select from vio basic domain info limit 1000000,10 處理分頁慢查詢的方式一般有以下幾種 思路一 構造覆蓋索引 思路二 優化 offset 無法用上覆蓋索引,那麼重點是想辦法快速過濾掉前 100w 條資料...
mysql語句優化原則 MySQL語句優化的原則
1 使用索引來更快地遍歷表。預設情況下建立的索引是非群集索引,但有時它並不是最佳的。在非群集索引下,資料在物理上隨機存放在資料頁上。合理的索引設計要建立在對各種查詢的分析和 上。一般來說 a.有大量重複值 且經常有範圍查詢 和order by group by發生的列,可考慮建立群集索引 b.經常同...
mysql語句優化原則 mysql語句優化原則
有時候發現資料量大的時候查詢起來效率就比較慢了,學習一下mysql語句優化的原則,自己在正常寫sql的時候還沒注意到這些,先記錄下來,慢慢一點一點的學,加油!這幾篇部落格寫的都可以 使用索引的原則 1.最左字首匹配原則。mysql會一直向右匹配直到遇到範圍查詢 不會用到b的索引 where a 1 ...