我正在执行如下查询,它需要6秒钟才能完成:
select *
from ( select aaa."ID"
from "aaa"
where aaa."DELETED" is null
order by aaa."CREATED" desc )
where rownum <= 15;
我有大约160万条记录在我的表中,我尝试为删除列和创建列添加单独的索引,还尝试添加包含创建和删除列的索引,并尝试以不同的顺序创建相同的索引。但是似乎没有任何帮助。我该怎么做才能加快速度?
由于查询是由Hibernate生成的,我不能太多地更改查询。
编辑: 即使没有 "aaa. “DELETED” is null” 的查询,查询也运行得非常缓慢。
编辑2: 查询计划如下:
![Query plan](https://istack.dev59.com/A1LlP.webp)
CREATE INDEX "aaa"."aaa_CREATED_ASC" ON "aaa"."aaa"
(
"CREATED"
)
PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE
(
INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT
)
TABLESPACE "SYSTEM" ;
CREATE INDEX "aaa"."aaa_CREATED_DESC" ON "aaa"."aaa"
(
"CREATED" DESC
)
PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE
(
INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT
)
TABLESPACE "SYSTEM" ;