日常开发中你是怎么优化SQL的?
数据库 MySQL
官方 推荐

这个问题问的挺大的,那么我们可以也先从几个大的纬度来回答。

  1. 添加合适索引优化表结构优化查询语句

然后针对每个大的纬度稍微讲几句。

1、添加合适索引

  • 对作为查询条件和order by的字段建立索引。
  • 对于多个查询字段的考虑建立组合索引,同时注意组合索引字段的顺序,将最常用作限制条件的列放在最左边,依次递减。
  • 索引不宜太多,一般5个以内。

2、优化表结构

选择正确的数据类型,对于提高性能也是至关重要。下面给出几种原则:

  • 数字型字段优于字符串类型

若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。

  • 数据类型更小通常更好

使用最小的数据类型,会减少磁盘的空间,内存和CPU缓存。好比时间类型尽量使用TIMESTAMP类型,因为其存储空间只需要 DATETIME 类型的一半。对于只需要精确到某一天的数据类型,建议使用DATE类型,因为他的存储空间只需要3个字节,比TIMESTAMP还少。

  • 尽量使用 NOT NULL

NULL 类型比较特殊,SQL 难优化。如果是一个组合索引,那么这个NULL 类型的字段会极大影响整个索引的效率。此外,NULL 在索引中的处理也是特殊的,也会占用额外的存放空间。

3、优化查询语句

分析语句,是否加载了不必要的字段/数据。

分析SQl执行计划,是否命中索引等。

如果SQL很复杂,优化SQL结构如果表数据量太大,考虑分表