当前位置: 代码迷 >> Sql Server >> 关于存储过程参数效率有关问题
  详细解决方案

关于存储过程参数效率有关问题

热度:95   发布时间:2016-04-24 09:59:59.0
关于存储过程参数效率问题
存储过程2种形式参数,其中@selectSql 最长的时候有5000字符,多表连接和查询多个字段。
一 
@countSql nvarchar(max),
@selectSql nvarchar(max)
其中 @countSql= ‘select count(*) from ('+@selectSql+') a', 这2个参数是在程序里面拼接出来直接调用存储过程。


@selectSql nvarchar(max)
然后在存储过程里面 拼接@countSql= ‘select count(*) from ('+@selectSql+') a'

在测试的时候,发现方案一的效率比二的高,理论上方案二可以减少网络传输,特别是传过来的字符串特别长的时候。
但是在数据库里面进行拼接,也是非常消耗性能的。



------解决思路----------------------
SQL中还是尽量避免拼接SQL语句。
有一点不明白的是:你方法二中,在数据库里面也必须要拼接执行么?
------解决思路----------------------
理论上2个方案应该是一样的执行效率.

建议从@selectSql所对应的查询语句优化上下功夫.
------解决思路----------------------
你的字符是类似一大串ID那样吗?
  相关解决方案