我要加入一个表几十次,每次,我都会根据其中一列的 SUBSTRING 的结果加入(或过滤)(它是一个字符串,但用零填充,我没有不关心最后四位数字)。结果,即使该列已编入索引并且我的查询将使用该索引,它也会进行表扫描,因为 SUBSTRING 本身没有编入索引,因此 SQL Server 必须在加入之前为每一行计算它。
我正在寻找有关如何加快此过程的任何想法。目前,表上有一个视图(它是“SELECT * FROM”,只是为了给表一个友好的名称),我正在考虑在计算的视图中添加一个列,然后对其进行索引。不过,我愿意接受其他建议 - 有什么想法吗?
更多细节: 我应该一开始就分享这个。该表从我们的计费系统接收复制,因此编辑基础表以添加计算列不是一种选择。任何计算列都必须添加到表的视图中。此外,前导零并不总是前导零 - 它们有时是我不感兴趣的其他数据。我想真正的问题是“如何在 VARCHAR 列中间加入数据同时也使用索引的?全文检索? ”
澄清我的例子 我正在简化,但本质上,假设我正在尝试在具有以下值的列中查找值:
00000012345MoreStuff
00000012345Whatever
19834212345
Houses12345837443GGD
00000023456MoreStuff
我对 SUBSTRING(7,5)="12345" 的行感兴趣,所以我想要第 1-4 行,而不是第 5 行。我建议在我的“SELECT *”视图中添加一列里面有这个子字符串,然后基于它进行索引。这更有意义吗?