2010-10-08 197 views
1

我有一张有数百万行的表格。 该表的PK是一个Int列。用户希望能够通过该PK在该表的行上进行通配符搜索。当进行这种查询时,这种方法会很慢,因为Sql服务器会将列值从int到char的隐式转换,以便每运行一次查询时都应用通配符如何在SQL Server中的Int列上为通配符搜索创建索引?

这个想法是创建一个存储该int列的“转换为char”值的索引,以便Sql Server可以重用该索引,而不是在每个查询中重新转换数百万个值。

我该如何实现?

注意:在此情况下,更改执行通配符搜索或将数据库模式中的列更改为char的业务需求不是选项。

干杯!

回答

4

SQL Server没有基于函数的索引,但可以通过添加将数据类型转换/转换为VARCHAR/etc并将索引此计算列的computed column来模拟行为。不过,如果你对LIKE比较的左侧进行通配,那么好处就没有意义了。