0

我创建了如下表

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'

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

4

3 回答 3

2

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

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

于 2013-08-03T15:29:42.417 回答
1

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

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

于 2013-08-03T15:30:19.473 回答
0

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

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

既使用索引到位,又删除索引后再次使用。您还应该在使用索引运行查询之前收集有关表的统计信息,否则您可能仍会获得执行全表扫描的查询。分享和享受。

于 2013-08-03T18:52:41.873 回答