我在一个包含以下行值的表上有一个索引(非聚簇)字符串列(我们只称它为'Identifier'):
`0000001`
`0000245`
`001`
`AB0001`
我希望能够有效地返回标识符以用户输入的特定数字结尾的所有行。例如,当用户输入1
时,应返回以下行:
0000001
001
AB0001
问题是使用WHERE Identifier LIKE CONCAT(N'%', @UserInput)
使用的索引扫描不能很好地扩展,因为该表中有大量的行(数百万)
我该如何有效地查询这些数据?我的第一个想法是添加一个代表Identifier列REVERSE()
的新列,然后使用WHERE ReversedIdentifier LIKE CONCAT(REVERSE(@UserInput), N'%')
使用“starts with”找到匹配项
这似乎不是最干净的解决方案,但这是我现在所能想到的。还有更好的方法吗?