索引失效
1)最佳左前缀法则:如果索引了多列,要遵循最左前缀法则,指的是查询从索引的最左前列开始并且不跳过索引中的列。 2)不在索引列上做任何计算、函数操作,会导致索引失效而转向全表扫描。 3)存储引擎不能使用索引中范围条件右边的列。 4)Mysql在使用不等于时无法使用索引会导致全表扫描。 5)is null可以使用索引,但是is not null无法使用索引。 6)like以通配符开头会使索引失效导致全表扫描。 7)字符串不加单引号索引会失效。 8)使用or连接时索引失效。
==内连接时,mysql会自动把小结果集的选为驱动表,所以大表的字段最好加上索引。左外连接时,左表会全表扫描,所以右边大表字段最好加上索引,右外连接同理。我们最好保证被驱动表上的字段建立了索引。
排序优化
尽量避免使用Using FileSort方式排序。 order by语句使用索引最左前列或使用where子句与order by子句条件组合满足索引最左前列。 where子句中如果出现索引范围查询会导致order by索引失效。
慢查询日志 介绍:MySQL的慢查询日志是MySQL提供的一种日志记录,他用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。可以由它来查看哪些SQL超出了我们最大忍耐时间值。 默认情况下,MySQL数据库没有开启慢查询日志,需要手动设置参数