我试图通过删除distinct关键字来调整一个查询以提高存储函数的性能。
在查询调优的过程中,我遇到了存储函数中查询,其中distinct关键字正在使用,因为性能下降,所以我尝试使用相同的功能编写查询而不使用distinct关键字。
具有不同关键字的当前代码: -
select distinct dm.strdatadest
from PUBLIC.temp te1
JOIN PUBLIC.applicationconfiguration AC on AC.intapplicationid = te1.applicationid
JOIN columnmapping cm on cm.intapplicationid = AC.intapplicationid
JOIN datamapping dm on lower(dm.strcolumnsource) = lower(cm.strcolumnsource)
JOIN srctable s on s.applicationid=AC.intapplicationid
where lower(cm.strtablesource) = lower(s.tablename) and
lower(dm.strdatasource) = lower('||quote_literal(rec.status) ||') and lower( dm.strcolumndest ) LIKE ''strstatus'' and te1.applicationid='||quote_literal(rec.applicationid);
通过删除不同的关键字来尝试代码: -
select dm.strdatadest
from PUBLIC.temp te,
PUBLIC.applicationconfiguration AC,
PUBLIC.columnmapping cm,
PUBLIC.datamapping dm
where AC.intapplicationid = te.applicationid and cm.intapplicationid = AC.intapplicationid and lower(dm.strcolumnsource) = lower(cm.strcolumnsource)
and lower(cm.strtablesource) = lower(s.tablename) and
lower(dm.strdatasource) = lower('||quote_literal(rec.priority) ||') and lower( dm.strcolumndest ) LIKE ''strpriority'' and te1.applicationid='||quote_literal(rec.applicationid)
GROUP BY dm.strdatadest;
我需要一些sujjestion谁通过删除不同的关键字来调整查询
关于您的查询,有两点需要提及
人们经常会问隐式和显式连接之间是否存在性能差异。答案是:“通常不是”
不同的方法执行如下:
- 将所有business_key值复制到临时表
- 对临时表进行排序
- 扫描临时表,返回与之前不同的项目
group by可以执行如下:
- 扫描整个表,将每个业务键值存储在哈希表中
- 返回哈希表的键
以下链接的精明解释。