我有一个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