存储过程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那样吗?