+ -
当前位置:首页 → 问答吧 → 求高人解答下面的SQL

求高人解答下面的SQL

时间:2011-11-04

来源:互联网

SQL code


--语句一
SELECT * FROM (
SELECT ROW_NUMBER() OVER (ORDER BY Id DESC) AS RowNum,* FROM Table
)
 AS tbl WHERE RowNum>=1 AND RowNum<10 AND 查询条件 如(Id=XXX)
--语句二
 SELECT * FROM (
 SELECT ROW_NUMBER() OVER (ORDER BY Id DESC) AS RowNum,* FROM Table
    WHERE 查询条件 如(Id=XXX)
 )
 AS tbl WHERE RowNum>=1 AND RowNum<10 



请问语句一和语句二哪种效率要高

作者: lstcyzj   发布时间: 2011-11-04

语句二

作者: q465897859   发布时间: 2011-11-04

第二种

作者: HEROWANG   发布时间: 2011-11-04

第一个是在结果集中过滤
第二个是在子查询中过滤

数据量比较大的情况下 先过滤在操作效率应该比较高

数据量不大的话 差不多

具体的请看执行计划



作者: fredrickhu   发布时间: 2011-11-04

我觉得差不多一样

作者: ssp2009   发布时间: 2011-11-04

数据量不大的话,查不多。如果数据量大,你可以看看查询计划,比较比较。也要看你索引怎么建的,用到索引条件没有?

作者: zlp321002   发布时间: 2011-11-04

這個查詢結果不一樣怎樣比較效率?


方法1佔優,具體要看一下執行計劃

作者: roy_88   发布时间: 2011-11-04

查询条件 如(Id=XXX)--放在里面和外面,影響RowNum的值

這沒有什麼可比較性,更新要看數據對查詢的影響

作者: roy_88   发布时间: 2011-11-04

这个要看执行计划了,不同数据量可能优化的结果也不一样。

作者: gogodiy   发布时间: 2011-11-04