20个SQL查询优化技巧

以下值得关注的 20个SQL查询优化技术列表:

  • 1.在庞大的表(>1.000.000)行上创建索引
  • 2.使用 EXIST() 代替 COUNT() 查找表中的元素
  • 3.用 SELECT 字段代替 SELECT * 4.
  • 4.避免在 WHERE 子句中使用子查询 5.
  • 5.尽可能避免 SELECT DISTINCT
  • 6.使用 WHERE 子句而不是 HAVING 子句 7.
  • 7.使用 INNER JOIN(而不是 WHERE)创建连接
  • 8.使用 LIMIT 对查询结果进行抽样
  • 9.尽可能使用 UNION ALL 而不是 UNION
  • 10.使用 UNION where 代替 WHERE ... 或 ... 查询。
  • 11.在非高峰时段运行查询
  • 12.避免在连接查询中使用 OR
  • 14.选择 GROUP BY 而不是窗口函数
  • 15.使用派生表和临时表
  • 16.在加载批量数据前删除索引
  • 16.使用物化视图而不是视图
  • 17.避免使用 != 或 <>(不等于)操作符
  • 18.尽量减少子查询的数量
  • 19.当使用左/右连接可以获得相同输出时,尽量少使用 INNER 连接。
  • 20.为检索同一数据集,经常尝试使用临时数据源。


什么是查询优化?
它的主要功能是通过查找最佳执行计划来确定最有效率方式 来执行给定的 SQL 查询。

查询优化器的工作原理是将 SQL 查询作为输入并对其进行分析以确定如何最好地执行它。

  • 第一步是解析 SQL 查询并创建语法树。然后优化器分析语法树以确定如何运行查询。
  • 接下来,优化器生成 替代性执行计划,这是执行同一查询的不同方式。每个执行计划指定访问表的顺序、连接方法以及任何过滤或排序操作。
  • 然后,优化器根据磁盘读取次数和执行查询所需的 CPU 时间为每个执行计划分配一个 成本。
  • 最后,优化器以最低的成本作为查询的最优执行计划。然后使用该计划来执行查询。