sql - PostgreSQL - 从连接列连接索引
问题描述
我正在尝试使用 PostgreSQL 9.2 将两个表连接在一起,其中一个是返回连接列的子查询,但这需要很长时间。
本质上,我的查询是:
select *
from (
select (s.a || ':' || s.b) source_key
from source s
) sourcedata
join audit a on a.source = sourcedata.source_key
我在 source.a、source.b 和 audit.source 上有索引。虽然需要很长时间。
我尝试在源上添加索引:
create index source_key_idx on source((a || ':' || b));
这对性能产生了很小的影响。
是否可以在级联索引上显式执行此连接?或者它已经这样做了?
我的下一个选择是添加一个新的列或函数,它会产生连接的值和索引并加入它。
解决方案
首先,我建议编写不带子查询的查询:
select *
from source s join
audit a
on a.source = (s.a || ':' || s.b).
然后对于这个查询,我建议在audit(source)
. 这个查询计划应该是source
对audit
.
推荐阅读
- woocommerce - Woocommerce Hook 上的语法错误(T_ENCAPSED_AND_WHITESPACE)
- delphi - 我在使用 urldecode 方法时遇到错误
- javascript - JavaScript替换数组值和移位增量数
- actions-on-google - 在 Google Assistant App 中拨打电话的问题
- maven - 为 Maven pom 提供外部参数并在 application.properties 文件中替换相同的参数
- java - 在数组中打印用户输入显示为空
- php - mysql php的左连接查询
- java - 如何克服此错误“com.mongodb.diagnostics.logging.JULLogger log”
- c# - 在 C# 中查找 Json 数组中的特定项目
- .net-core - Web API 将 JSON 对象转换为简单的参数