使用like關鍵字時,前置%會導緻索引失效。
使用null值會被自動從索引中排除,索引一般不會建立在有空值的列上。
使用or關鍵字時,or左右字段如果存在一個沒有索引,有索引字段也會失效。
使用!=操作符時,将放棄使用索引。因為範圍不确定,使用索引效率不高,會被引擎自動改為全表掃描。
不要在索引字段進行運算。
在使用複合索引時,最左字首原則,查詢時必須使用索引的第一個字段,否則索引失效;并且應盡量讓字段順序與索引順序一緻。
避免隐式轉換,定義的資料類型與傳入的資料類型保持一緻。
使用多列字段排序的時候,應當盡量使用同樣的排序規則,否則會導緻索引失效。
使用 lower 函數進行不區分大小寫比較時,應當先檢查字段的排序規則是否已經為 utf8_general_ci 不區分大小寫排序,如果已經是,則避免使用 lower 轉小寫進行比較,因為 lower 會導緻索引失效。
mysql的MyISAM引擎是不支援事務的,需要更改為Innodb
格式:update table_a inner join table_b on xxx = xxx set table_a.xxx = "xxx"
時間字段 <= date_add(now(), interval - 6 MONTH)
interval可是:SECOND 秒、MINUTE 分鐘、HOUR、DAY 天、MONTH 月、YEAR 年
查詢:
更新: