我有以下查询,它处理Oracle DB中每个ent_data和ent_details表中的1000万条记录。
select val1.type,count(val1.type)
from ent_data val1
inner join ent_details az
ON val1.ENT_ID=az.ent_id
and val1.ENT_TYPE=az.ent_type
and val1.user_key=87
group by val1.type;
----------------------------------------------------------------------------------------------------------------------------
Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------------------------------------
HASH GROUP BY | | 3 | 126 | | 135K (1)| 00:27:10 |
FILTER | | | | | | |
HASH JOIN | | 10M| 413M| 305M| 134K (1)| 00:26:56 |
TABLE ACCESS FULL | ent_details | 10M| 187M| | 13116 (2)| 00:02:38 |
TABLE ACCESS FULL | ent_data | 10M| 226M| | 89074 (1)| 00:17:49 |
执行上述查询大约需要27秒的时间在SQL Developer上执行,但由于获取的数据用于在UI上显示27秒,这是我无法忍受的。
我在ent_data表的Category,ENT_ID和ent_type列上有索引。另外,我在ent_details表的ent_id和ent_type列上有索引。
非常感谢有关如何改进查询性能的任何指导。