跳到主要内容

26 篇博文 含有标签「audit」

查看所有标签

SQL优化技巧 - OR连接的条件重写为UNION

· 阅读需 6 分钟
PawSQL Team
Optimize your SQL Queries by Clicks!

问题定义

如果使用OR连接两个查询条件,数据库优化器有可能无法使用索引来完成查询。譬如对于以下的SQL语句,

select * from customer where c_phone like '139%' or c_name = 'Ray'

如果这两个字段上都有索引,可以把他们重写为UNION查询,以便使用索引提升查询性能。

select * from customer where c_phone like '139%'
union
select * from customer where c_name = 'Ray'

但是这种转换并不总是能够提升查询性能,它需要一定的适用条件,并需要经过基于代价的估算。

SQL优化技巧 - 投影下推

· 阅读需 3 分钟
PawSQL Team
Optimize your SQL Queries by Clicks!

问题定义

投影下推(Projection Pushdown)指的通过删除DT子查询中无意义的列(在外查询中没有使用),来减少IO和网络的代价,同时提升优化器在进行表访问的规划时,采用无需回表的优化选项的几率。

考虑下面的例子,

SELECT count(1) FROM (SELECT c_custkey, avg(age) FROM customer group by c_custkey) AS derived_t1;

重写后的SQL为,

SELECT count(1) FROM (SELECT 1 FROM customer group by c_custkey) AS derived_t1;

SQL优化技巧 - 查询折叠

· 阅读需 6 分钟
PawSQL Team
Optimize your SQL Queries by Clicks!

问题定义

查询折叠(Query Folding)指的是把查询中的视图、CTE或是DT子查询展开,并与引用它的查询语句合并,从而减少查询语句的子查询数目,降低其复杂度的一种优化算法。其收益有以下三个方面:

  • 避免中间结果集的物化
  • 启用更多的连接顺序规划
  • 提供更多的索引建议机会(PawSQL索引推荐引擎)