[英]How do I write a string search query that uses the non-clustered indexing I have in place on the field?
我正在寻找一个查询,该查询将在使用非聚集索引构建的街道地址字段上使用非聚集索引计划。 我遇到的问题是,如果我要搜索街道地址,则很可能会使用“赞”评估函数。 我在想使用此功能将导致表扫描而不是使用索引。 在这种情况下,我该如何写一个? 将非聚集索引放在address3字段上是没有意义的吗? 提前致谢。
如果您的LIKE表达式正在执行字符串开始搜索( Address LIKE 'Blah%'
),则希望使用索引,最有可能通过索引查找来使用。
如果搜索“ Address LIKE '%Blah%'
,则将进行表扫描/索引扫描,具体取决于您在查询中返回的字段数以及索引的选择性。
varchar字段是从左到右索引的,与索引字典或百科全书的索引几乎相同。
如果您知道字段的开头(例如LIKE'streetname%'),那么索引将非常有效。 但是,如果只知道字段的一部分(例如LIKE'%something%'),则无法使用索引。
使用LIKE不一定要使用表扫描。 它可能利用索引,具体取决于您要搜索的字符串。 (例如,LIKE'something%'通常能够使用索引,而LIKE'%something'可能无法使用索引,尽管在这种情况下服务器可能仍然至少能够执行索引扫描,这比这里有一篇很好的文章谈到了关于SQL Server的LIKE与索引的关系(显然,不同的DBMS会以不同的方式实现它)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.