首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

!动态语句的效率有关问题

2012-02-11 
求助!动态语句的效率问题在存储过程里面使用动态语句,其中@SortID,@ArticleID是变量,语句A:SELECTArticleI

求助!动态语句的效率问题
在存储过程里面使用动态语句,其中
@SortID,@ArticleID是变量,
语句A:
SELECT   ArticleID,Title,SortID   FROM   Article   WHERE   SortID=@SortID   AND   ArticleID <@ArticleID   ORDER   BY   ArticleID   DESC
与语句B:
EXEC   "SELECT   ArticleID,Title,SortID   FROM   Article   WHERE   SortID= "+@SortID+ "   AND   ArticleID < "+@ArticleID+ "   ORDER   BY   ArticleID   DESC "

那种执行效率更高?A语句会不会导致索引用不上?
请大虾们指点!!

[解决办法]
让我们在查询分析器中比较一下三条语句
select 1
exec ( 'select 1 ')
exec sp_executesql N 'select 1 '

1 执行计划完全是一模一样的;
2 跟踪结果
TEXTEvent Class
select 1SQL:StmtCompleted
select 1SQL:StmtCompleted
exec ( 'select 1 ')SQL:StmtCompleted
select 1SQL:StmtCompleted
exec sp_executesql N 'select 1 'SQL:StmtCompleted

虽然从表面上看,或者从单条语句看,直接执行sql语句比exec或者sp_executesql的效率高,但是我觉得这是片面的;如果只是一条非常简单的sql语句,例如select name from student,效率都差不多的,3这不同之处基本可以忽略不计的;但是如果select name from student where id=?,在系统中的影响就有差别了,应该说sp_executesql的稍微好一些,不需要重新编译的,这个可以在系统运行时,使用时间探查器观察在存储过程中是否有未被重复使用的sql语句

个人观点,期待高手精彩回答!

热点排行