如何使数据库执行索引扫描?

ivel 发布于 2019-03-09 indexing 最后更新 2019-03-09 14:38 5 浏览

简单的问题,我想。我想在桌上做一个索引扫描,但它没有这样做。所以我有一个ID列具有唯一聚簇索引的表,并有两个其他列,first_name和last_name。以下是我的查询...

SELECT FIRST_NAME
FROM TABLE_A
WHERE FIRST_NAME LIKE 'GUY'
我想因为我没有在索引栏上搜索它应该这样做。 为什么它不能正常工作?我如何确保每当我需要时都可以使用它?
已邀请:

nnam

赞同来自:

由于first_name不是任何索引的一部分,因此数据库中没有使用索引的点 - 它必须扫描所有索引,访问每个条目的实际表行,并在那里评估first_name值。由于它无论如何都要访问所有表的行,优化器只是更喜欢执行全表扫描,并保存(无用的)索引访问。 如果要使用索引来加速查询,则应创建一个覆盖此列的索引。例如。:

CREATE INDEX table_a_first_name_ind ON table_a(first_name)