SQL优化基本逻辑
-
良好的SQL编码习惯(熟悉SQL编码规范、例如避免使用select *)。
-
优秀的SQL编写逻辑(例如表关联时小表驱动大表。
-
定位需要优化的慢SQL语句。(如何定位慢SQL,通过执行计划分析优化)
-
调整优化策略并进行测试。(SQL结构调整、索引应用)
-
按业务进行分库分表。
具体示例:
多字段查询时,会基于查询字段找到对应的主键索引,然后再基于主键索引去查询其他字段,会造成回表查询,可以减少没必要的字段查询,给需要查询的字段建立索引(索引覆盖、减少回表查询)
or可能会使索引失效,进而执行全表扫描,可以将操作替换成union操作
条件中包含和null比较时可能会不走索引,当然这也跟SQL优化器有关,优化器有时会因为数据量的多少,对是否走索引进行评估,假如它认为不走索引效率可能会更高,可能就不走索引了
比如查询字段是
varchar
类型,而在查询语句中传入整数类型,这样就存在隐式转换,可能导致查询的时候不走索引
实际应用中这个查询是否会走索引还与数据量有关
当我们进行多条件查询时(这几个查询字段正好建立了联合索引),尽量按照建立索引的顺序去查询,如果查询的条件顺序和索引顺序不一致,可能会导致查询不走索引