我有一個SSRS報告,將一串縣傳遞給存儲過程。由於我不得不構建報告,我需要爲縣附加36個字符的GUID。我然後使用子串函數剝離GUID在存儲過程:Substring函數有更快的替代嗎?
and county IN(Select substring(item, 1, LEN(item)-36) from fnsplit(@County, ',')
報告運行在約8秒,這是在REPLACE函數的巨大改進。但我仍然希望讓這個跑得更快。有誰知道更好的方法來做到這一點?我不允許在表格中包含索引,所以這不是一個選項。
看看這裏http://stackoverflow.com/questions/3828374/relative-performance-in-sqlserver-of-substring-vs-a-right-left-combo。 –
如果子字符串確實是問題,聽起來很奇怪。你確定這不是fnsplit導致你的問題?你應該真的包含整個語句,查詢計劃,因爲這是一個函數,所以最好還要查看計劃緩存中的性能統計信息。 –
fnsplit在三個不同的變量上運行,但運行速度非常快。只有當我添加了substring()時,它才放慢了速度。當我查看函數的執行計劃時,它只顯示兩個表格插入的成本爲50%。有沒有一種好的方法來查看變量的統計信息?我只能在運行執行計劃時插入一條記錄來代替變量。 – jackstraw22