SQL查询及索引优化

  • 避免使用 Like 模糊查询

  • 查询时只列出需要查询的字段,而不是用SELECT *

  • 不在 MySQL 中进行运算,减轻 MySQL 的压力

  • 经常查询的字段,创建合适的索引,提高查询效率(在 WHERE、GROUP BY 和 ORDER BY 列加索引)

  • 使用慢查询日志slow-log,找出执行慢的查询

  • 使用 EXPLAIN 来决定查询功能是否合适

  • 当只要一行数据时使用LIMIT1

  • 数据量大的表,InnoDB 不要轻易 select count(*),性能消耗极大,可能锁表,最好count一个字段,比如count(id),或者count(1)

  • 避免使用 ORDER BY RAND()

  • 这些操作都是比较耗资源的DISTINCT、COUNT、GROUP BY、各种MySQL函数

  • 在Join表的时候使用相当类型的例,并将其索引

  • 保证索引简单,不要在同一列上加多个索引

  • 使用索引字段和 ORDER BY 来代替 MAX

  • 当服务器的负载增加时,使用SHOW PROCESSLIST来查看慢的/有问题的查询。

Last updated

Was this helpful?