索引创建但不会加快检索过程

时间:2013-08-03 15:19:53

标签: sql oracle oracle10g

我创建了表格如下:

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'

那么索引如何改进我的检索过程呢?

3 个答案:

答案 0 :(得分:2)

当您尝试获取所有行时,索引不会改进检索过程。

索引可以更快地找到行的子集。

答案 1 :(得分:1)

如果要从大表中检索几行,索引可以提供帮助。但是,由于您检索了所有行,并且由于索引包含表的所有列,因此不会加快查询速度。

此外,您没有告诉我们您使用什么工具来检索数据。我猜你使用的是SQL Developer或Toad。所以你衡量的是SQL Developer或Toad在内存中存储300,000行的时间,以便它们可以在一个可滚动的表格中轻松地显示在屏幕上。你并没有真正测量检索它们需要多长时间。

答案 2 :(得分:0)

要测试索引的效果,您可能需要尝试查询,例如

SELECT *
  FROM T1
  WHERE NUM IN ('288888', '188888', '88888')

与索引就位,并在删除索引后再次使用。您还应该在运行具有索引的查询之前收集有关表的统计信息,或者您仍然可以获得执行全表扫描的查询。分享并享受。