使用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 年
查询:
更新: