(一)在使用索引的時候,需要注意的幾個地方來防止索引的失效
當你使用索引的時候,最好能夠把你建立的索引的字段都給用到。不僅可以提供查詢的效率
最佳左字首法則,意思就是當你如果有建立過多個字段索引的組合索引的時候,最要遵循最左字首法則,就是指當mysql在使用索引查詢的時候不會跳過中間已經建立好的索引列
不能在索引列上做任何操作(比如使用函式、計算、型別轉換),這樣也會導致索引失效然後進行全表掃瞄。
儲存引擎不能使用你已經建立好的索引的範圍條件右邊的列(如果建立的索引欄位是 name、age、***的時候也就是在select * goods from name = 『wangwei』 and age >20 and ***=『男』 )這條語句的***索引就會失效
盡量使用覆蓋索引,也就是你建立的索引欄位都要用到,減少select * 的使用
mysql在使用 !=、< ,> 的時候會導致索引失效,然後進行全表掃瞄
如果sql語句**現is null 或者 is not null 的時候也會出現索引失效
如果使用like關鍵字的時候也會導致索引失效,如果業務允許可以只匹配(『張三%』)後者的情況下並不會導致索引失效的問題,但是如果是(『%張三』)這種情況的話就會導致索引失效的問題
如果使用的索引字段需要匹配的字段型別是varchar型別的話,若不加單引號 『 』 的話也會導致索引失效,違反了第3條
少用or,因為用or的話也會導致索引失效的問題
(二)如何多表關聯的話怎麼去建立不同的索引?
如果是在單錶的情況下,我們一般盡量避開給範圍查詢的字段進行建立索引
如果是兩個表關聯的話(特別是使用left join 的時候)我們一般都是給右表的字段進行建立索引,如果是或者 使用right join的時候我們一般都是給左表的字段建立索引
如果是三個表關聯的話,一般都是遵循2的基礎上進行建立的
---------------------
如何避免索引失效
全值匹配 最佳左字首法則 如果索引了多列,要遵守最左字首法則。指得時查詢從索引的最左前列開始並且不跳過索引中的列 不在索引列上左任何操作 計算 函式 自動or手動 型別轉換 因為在索引列上做操作會導致索引失效而轉向全表掃瞄 儲存引擎不能使用索引中範圍條件右邊的列 盡量使用覆蓋索引 只訪問索引的查詢 ...
magento索引失效,如何重新整理索引
我們在使用magento的時候通常會使用到後台來重新索引,system index management 當你遇到這種情況 cannot initialize the indexer process.時無法重新索引怎麼辦呢?步驟 1 登入phpmyadmin 或其他資料庫管理工具 2,開啟magen...
mysql in 索引 失效 in 索引失效的問題
簡單的in查詢 索引失效 步驟1 檢查建立索引沒有 order status 欄位為普通索引的tinyint型別 2 檢查是否使用了使索引失效的語句 3 explain檢視執行計畫 而 in 1 時會走索引 5 檢視是否關閉的全域性的索引 comment顯示disabled則表示關閉了索引 show...