2010-10-08 34 views
1

我有一張有數百萬行的表格。 該表的PK是一個Int列。用戶希望能夠通過該PK在該表的行上進行通配符搜索。當進行這種查詢時,這種方法會很慢,因爲Sql服務器會將列值從int到char的隱式轉換,以便每運行一次查詢時都應用通配符如何在SQL Server中的Int列上爲通配符搜索創建索引?

這個想法是創建一個存儲該int列的「轉換爲char」值的索引,以便Sql Server可以重用該索引,而不是在每個查詢中重新轉換數百萬個值。

我該如何實現?

注意:在此情況下,更改執行通配符搜索或將數據庫模式中的列更改爲char的業務需求不是選項。

乾杯!

回答

4

SQL Server沒有基於函數的索引,但可以通過添加將數據類型轉換/轉換爲VARCHAR/etc並將索引此計算列的computed column來模擬行爲。不過,如果你對LIKE比較的左側進行通配,那麼好處就沒有意義了。