索引仅在LIKE运算中使用的varchar列是一个好主意吗?从我从查询分析中可以读到的内容我得到以下查询:
SELECT * FROM ClientUsers WHERE Email LIKE '%niels@bosmainter%'
Run Code Online (Sandbox Code Playgroud)
我得到的"估计子树成本"为0.38,没有任何索引,0.14有索引.如果使用索引优化了查询,这是一个用于anlayzing的好指标吗?
我加入一个表几十个不同的时间,每次,我根据其中一列的SUBSTRING结果加入(或过滤)(它是一个字符串,但左边用零填充,我不是'关心最后四位数).因此,即使此列已编制索引并且我的查询将使用索引,它也会进行表扫描,因为SUBSTRING本身未编入索引,因此SQL Server必须在加入之前为每一行计算它.
我正在寻找有关如何加快这一过程的任何想法.目前,在表上有一个视图(它是一个"SELECT*FROM",只是为了给表一个友好的名称),我正在考虑在计算的视图中添加一列,然后对其进行索引.不过,我对其他建议持开放态度 - 任何想法?
更多细节: 我应该首先分享这个.该表从我们的计费系统接收复制,因此编辑基础表以添加计算列不是一种选择.必须将任何计算列添加到表上的视图中.此外,前导零并不总是前导零 - 它们有时是我不感兴趣的其他数据.我认为真正的问题是" 如何在VARCHAR列的中间加入数据同时还可以使用一个索引?全文搜索? "
澄清我的例子 我正在简化,但实际上,假设我正在尝试使用以下值在列中查找值:
00000012345MoreStuff
00000012345Whatever
19834212345
Houses12345837443GGD
00000023456MoreStuff
Run Code Online (Sandbox Code Playgroud)
我对SUBSTRING(7,5)="12345"的行感兴趣,所以我想要1-4行,但不是第5行.我建议的是在我的"SELECT*"视图中添加一列在其中包含此子字符串,然后根据该索引进行索引.那更有意义吗?