当前位置: 代码迷 >> Sql Server >> [問題]為何SQL Server不增援LIMIT分頁語法
  详细解决方案

[問題]為何SQL Server不增援LIMIT分頁語法

热度:105   发布时间:2016-04-25 00:18:46.0
[問題]為何SQL Server不支援LIMIT分頁語法?
講到SQL的分頁方式,在SQL-92裏,都是用LIMIT語法
偏偏SQL Server就是用TOP,甚至到SQL2008後用RANK方式
但它的直覺性都不如LIMIT好用。

查了google,洋人都痛罵微軟死不支援
以微軟從善如流的企業文章,怎會一直不支援LIMIT語法呢?

大家說說背後原因吧?
------解决方案--------------------
还有一个:in的语法需要加强
in只支持单列,不支持(f1,f2) in (select fa,fb from ...) 
只能用join实现
------解决方案--------------------
虽然功能有实现,确定在写法上很麻烦的!
------解决方案--------------------
引用:
强人所难.


说到这个,才是我一直不理解的:
数据库引擎在内部输出最终结果集时,多增加一列(最后结果集的记录序号),应该没增加多大开销
微软为什么就不提供呢?
如果有了它(top+skip),分页实现就非常简单了,不像现在只有top,不得不反复几次top才能实现skip n top m简单实现的结果

而且,如果数据库引擎实现,它只要先产生 序号和id 这样的结果集(因为只有2个整数字段,一般它比真正的结果集要小多了),然后按skip n top m得到只有m条记录的2个整数字段结果集,然后再按id去关联sql真正要求返回的所有字段
这样的过程,io的开销应该比现在的做法要低很多。。。。。
  相关解决方案