【发布时间】:2018-09-02 08:55:02
【问题描述】:
这是汤姆·凯特的书的节选。
“我们正在使用
SELECT COUNT(*) FROM T查询(或类似的东西) 我们在表 T 上有一个 B*Tree 索引。但是,优化器已满 扫描表,而不是计算(小得多的)索引 条目。在这种情况下,索引可能位于一组列上 可以包含 Null。由于完全为空的索引条目永远不会 做了,索引中的行数将不是中的行数 桌子。优化器在这里做的是正确的事——它会得到 如果它使用索引来计算行数,则错误答案。”
据我所知,当我们使用 WHERE 子句时,索引就会出现。为什么索引会出现在上述场景中?在反驳他之前,我想知道事实。
【问题讨论】:
-
“使用 where 子句时出现索引” - 这不是索引使用的唯一场景。如果优化器这么认为,一个简单的 select 语句就可以很好地利用索引。
标签: sql oracle query-performance