数据库查询优化方案小结

引言

  • 本文小结了数据查询的优化方案;

查询耗时点

  • 解析SQL语句时间;
  • 磁盘存取(查询所用CPU时间);
  • 磁盘IO;
  • 并行/分布式数据库的网络通信时间;
  • 其中,磁盘存取一般认为是耗时最多的点;

数据库层面的优化

  • 优化器设计(可将用户输入语句转换为等价的效率更高的执行语句);
  • 优化索引设计;
  • 优化查询算法:
    • 在等价的查询语句中,选择读磁盘最少的那个;
    • 对于简单的查询语句,可通过线性扫描和搜索引擎处理;
    • 对于复杂的查询,将它转换为简单查询的并和交;
    • 用外部归并排序算法对大于内存的关系进行排序;

用户层面的优化

  • 避免出现SELECT * FROM table 语句,要明确查出的字段;
  • 在一个SQL语句中,如果一个where条件过滤的数据库记录越多,定位越准确,则该where条件越应该前移;
  • 使用内层限定原则,在拼写SQL语句时,将查询条件分解、分类,并尽量在SQL语句的最里层进行限定,以减少数据的处理量;
  • 在判断有无符合条件的记录时建议不要用SELECT COUNT (*)和select top 1 语句;
  • 小心使用 IN 和 OR,需要注意In集合中的数据量,建议集合中的数据不超过200个;
  • 应绝对避免在order by子句中使用表达式;
  • <><> 代替,>>=代替,<<=代替,这样可以有效的利用索引;
  • 如果需要从关联表读数据,关联的表一般不要超过7个;
  • 在一个事务中,对同一个表的多个insert语句应该集中在一起执行;
您的支持是对我最大的鼓励!