繁体   English   中英

如何编写一个字符串搜索查询,该查询使用我在该字段上已建立的非聚集索引?

[英]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会以不同的方式实现它)。

从理论上讲,数据库将使用最佳索引。 您正在使用哪种数据库服务器,您真正要实现的目标是什么,您的LIKE语句将是什么样的? 例如,通配符所在的位置可以对所使用的查询计划有所不同。

根据您要实现的目标,其他可能的方法是对数据进行一些预处理,并使用其他对搜索有用的列,或者使用索引视图。

这里是有关将索引与SQL Server 2005和varchar字段一起使用一些讨论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM