【发布时间】:2018-09-01 20:48:43
【问题描述】:
在一个表中,我有一个关于列 ID (VARCHAR) 的索引。
鉴于存在索引,我希望
Select Top 1 * from table where ID like 'abc%' order by ID desc
要非常快。
然后我做了一个
set statistics io on
比较发现
Select Top 1 * from table where ID like 'abc___' order by ID desc
也非常快(读取次数相同,在我的情况下为 5)。实际执行计划也显示完全相同,索引查找和键查找在这两种情况下。
据我了解,它应该无法使用索引,因此读取次数要多得多。
随着索引的排序,使用“abc%”它应该能够跳转到索引的末尾,那里有以 abc 开头的匹配项。但是当我用 'abc___' 询问特定长度时,它应该不能直接跳转到索引中的某个位置,而应该扫描所有以 'abc' 开头的条目的长度。
表格中有数 1000 个采用该格式的条目。
为什么查询“abc___”和查询“abc%”一样快?
【问题讨论】:
标签: performance tsql indexing wildcard