1,在sql中如果在左邊執行函式則索引丟失
例如:
select * from t where c-1 = 1000; //不適用索引
select * from t where c = 1000 + 1; //使用索引
2,如果條件中有or,即使其中有條件帶索引也不會使用(這也是為什麼盡量少用or的原因)
3,like查詢是以%開頭
4,如果列型別是字串,那一定要在條件中將資料使用引號引用起來,否則不使用索引
explain 後邊加sql標識查詢索引使用情況
詳情看:mysql explain執行計畫詳解
也可以通過
show index from 表名;
來查詢索引的基數和實際是否符合,如果和實際很不符合的話,重新來統計索引的基數,用這條命令
analyze table 表名;
SELECT INTO語法,丟失索引
select into語法在我們開發過程中經常會用到如 select into table b from table a 產生的新錶table b並不會包含table a中的主鍵以及索引,遇到查詢超時問題,可以先檢查 是否包含select into操作 並重新增加索引 增加主鍵,主鍵上會預設有聚集索...
索引失效的情況
索引並不是時時都會生效的,比如以下幾種情況,將導致索引失效 如果條件中有or,即使其中有條件帶索引也不會使用 這也是為什麼盡量少用or的原因 注意 要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引 對於多列索引,不是使用的第一部分,則不會使用索引 like查詢是以 開頭 如果列型別是...
mysql索引失效情況
1 沒有查詢條件,或者查詢條件沒有建立索引 2 在查詢條件上沒有使用引導列 3 查詢的數量是大表的大部分,應該是30 以上。4 索引本身失效 5 查詢條件使用函式在索引列上,或者對索引列進行運算,運算包括 等 錯誤的例子 select from test where id 1 9 正確的例子 sel...