我创建了表格如下:
create table T1(num varchar2(20))
然后我在上面的表中插入了3个lac数字,现在看起来像下面的
num
1
2
3
.
.
300000
现在,如果我这样做
select * from T1
然后需要1分15秒才能完全获取记录,因为我在列num
上创建了索引,如果我使用下面的查询,那么获取3个lac记录应该更快但是获取记录也需要1分15秒
select * from T1 where num between '1' and '300000'
那么索引如何改进我的检索过程呢?
答案 0 :(得分:2)
当您尝试获取所有行时,索引不会改进检索过程。
索引可以更快地找到行的子集。
答案 1 :(得分:1)
如果要从大表中检索几行,索引可以提供帮助。但是,由于您检索了所有行,并且由于索引包含表的所有列,因此不会加快查询速度。
此外,您没有告诉我们您使用什么工具来检索数据。我猜你使用的是SQL Developer或Toad。所以你衡量的是SQL Developer或Toad在内存中存储300,000行的时间,以便它们可以在一个可滚动的表格中轻松地显示在屏幕上。你并没有真正测量检索它们需要多长时间。
答案 2 :(得分:0)
要测试索引的效果,您可能需要尝试查询,例如
SELECT *
FROM T1
WHERE NUM IN ('288888', '188888', '88888')
与索引就位,并在删除索引后再次使用。您还应该在运行具有索引的查询之前收集有关表的统计信息,或者您仍然可以获得执行全表扫描的查询。分享并享受。