A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HM刘磊 中级黑马   /  2013-4-15 01:57  /  1555 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 HM刘磊 于 2013-4-15 02:01 编辑


use SMSstudent
go
/*第一种分页方法 */
SELECT     TOP (5) studentID, studentName, nation, sex, birthday, classID, telephone, credithour, ru_date, address, pwd, remark
FROM         student
WHERE     (studentID NOT IN
                          (SELECT   distinct  TOP (5) studentID
                            FROM          student AS student_1
                            ORDER BY studentID DESC))
ORDER BY studentID desc
/*第二种分页方法*/
select studentID, studentName, nation, sex, birthday, classID, telephone, credithour, ru_date, address, pwd, remark from (
select (row_number() over(order by studentID desc) ) as IDa,* from student ) as ids where ids.ida>5 and ids.ida<=10

上面Sql代码都实现了查询指定条目行数据的功能,我想问在实际工作中一般用那种方法,
实际测试中哪个性能好?

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

2 个回复

倒序浏览
1. 在实现分页检索,排行榜等功能的时候,需要限制检索的结果集行数,不同的数据库系统对此的支持是不同的;
2。MSSQLServer:MSSQLServer中提供了TOP关键字用来返回结果集中的前N条记录;
3。在MSSQLServer2005中还可以使用窗口函数ROW_NUMBER()实现限制结果集行数;
4。Oracle中支持窗口函数ROW_NUMBER(),其用法和MSSQLServer2005中相同;
5。除了窗口函数ROW_NUMBER(), Oracle中还提供了更方便的rownum机制,Oracle为每个结果集都增加;了一个默认的表示行号的列,这个列的名称为rownum.

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
实际项目中存储过程分页也用的比较多
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马