码迷,mamicode.com
首页 > 其他好文 > 详细

fetch

时间:2015-02-27 22:52:12      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

1、

在order by fetch first中,所有的记录必须从磁盘取出来放入一个叫insert buffer的内部结构,然后进行排序,按照常识我们知道一般树排序的复杂度为O(nlogn), 最好的基数排序的复杂度是O(n),但是也需要额外生成许多复杂的数据结构。

而在MAX()语句中,只是使用了sqlrimax来从n个记录中取最大值,这n个记录从磁盘中取出来后,不用插入insert buffer进行排序,只需要依次和最大值进行比较,如果小于,则丢弃。算法复杂度为O(n),不需要额外的复杂结构。因此速度比SQL1要快。

 

2、在db2中如果想获取前n行,只要加上fetch first n rows only 就可以了,但在oracle中没有fetch,网上很多人说可以用oracle的rownum<=n来替代db2的fetch first n rows only,但这样的替换,在对结果集需要进行order by之后再获取前n行时,是不对的。根据我的试验,rownum的顺序好像是和rowid相对应的,而rowid的顺序是根据插入表中的数据的顺序有关

fetch

标签:

原文地址:http://www.cnblogs.com/caroline4lc/p/4016947.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!