如何有效地查找在SQL Server中以特定值结束的非常大的表中的行?

时间:2016-12-05 04:30:07

标签: sql sql-server azure-sql-database

我在一个包含以下行值的表上有一个索引(非聚簇)字符串列(我们只称它为'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”找到匹配项

这似乎不是最干净的解决方案,但这是我现在所能想到的。还有更好的方法吗?

0 个答案:

没有答案