我在为Oracle 12c编写的查询中遇到性能很差的问题。这可能与我对连接的低效使用有关,并希望有人能帮我解决我出错的地方。我的查询目前有需要一分钟时间才能运行。加入性能较差的SQL查询
我正在尝试在表和列名返回:
- 列属于主键
- 列类型是数字
- 表的所有者是MY_OWNER
- 的主键是一列约束
真正水流我的查询看起来如下
SELECT consCols.table_name, consCols.column_name
FROM all_cons_columns consCols
INNER JOIN all_constraints cons
ON cons.constraint_name = consCols.constraint_name
INNER JOIN all_tab_columns cols
ON consCols.table_name = cols.table_name AND consCols.column_name = cols.column_name
WHERE cons.constraint_type = 'P'
AND cons.owner = 'MY_OWNER'
AND cols.data_type = 'NUMBER'
AND consCols.table_name IN(
SELECT consCols2.table_name
FROM all_cons_columns consCols2
INNER JOIN all_constraints cons2
ON cons2.constraint_name = consCols2.constraint_name
WHERE cons2.constraint_type = 'P'
AND cons2.owner = 'MY_OWNER'
GROUP BY consCols2.table_name
HAVING COUNT(consCols2.table_name) = 1
);
谢谢你给我的任何帮助。
请运行查询和发布结果的解释计划。 – OldProgrammer