1

我认为简单的问题。我想对表进行索引扫描,但没有这样做。所以我有一个在 ID 列上有一个唯一聚集索引的表,还有另外 2 个列,first_name 和 last_name。以下是我的查询...

SELECT FIRST_NAME
FROM TABLE_A
WHERE FIRST_NAME LIKE 'GUY'

我想既然我没有在带有索引的列上搜索它应该这样做。

为什么它不工作,我如何确保每次我想要它都能让它工作?

4

1 回答 1

0

由于first_name不是任何索引的一部分,因此在数据库中使用索引毫无意义 - 它必须扫描所有索引,访问每个条目的实际表行,并评估first_name那里的值。由于无论如何它都在访问表的所有行,优化器只是更喜欢执行全表扫描,并保存(无用的)索引访问。

如果您想使用索引来加快查询速度,您应该创建一个涵盖该列的索引。例如:

CREATE INDEX table_a_first_name_ind ON table_a(first_name)
于 2015-02-06T14:04:04.317 回答