从Oracle关系数据库中选取第m至第n行记录
来源:互联网 发布:java jdbc driver管理 编辑:程序博客网 时间:2024/04/29 14:36
我相信很多程序员朋友都遇到过这么一个问题,就是分页显示。
在做的时候,无论如何,我们都不应该把记录全部读到内存当中再选择需要的记录少了的话,还可以,要是表中有50万条记录呢?保证你会死掉
最好的方法:
我先问一个问题:真的会有很多时间需要支持很多种数据库的应用吗?不是吧?
如果的确真的是的话那么分别实现一套方法吧,然后用DAO模式来解决藕合度问题,把数据库操作的事情单拉出来吧!
下面给出Oracle/Sqlserver/MySQL三种数据库先出第m至第n条记录的方法:
获取按照F1字段升序排序的,从m至n行记录
注意,F1一定要做索引或主键,最好是主键
SqlServer
select t2.* from (Select top n-m t1.* from (Select top n * from Tablename as t order by t.F1) as t1 order by t1.F1 desc) as t2 order by t2.F1
select t2.* from
(
select top 20 t1.* from
(
select top 500020 * from dbgen as t order by t.F1
)
as t1 order by t1.F1 desc
)
as t2 order by t2.F1
Oracle
select * from (select rownum r, t.* from Tablename t where r<n) t1 where t1.r > m and t1.r <= m
select * from (select rownum r, t.* from DBTEST t where rownum<300020) ss where ss.r > 300000 and ss.r <= 300020
MySQL
最简单
select * from Tablename t order by t.F1 limit n,m-n+1
select * from DBtest t order by t.F1 limit 300000,20
性能对比:
三者差不多少!
上面实例中的语句在50万条记录的表中选取第50万左右的记录20条,均不超过1秒。
其它数据库我相信也能找到差不多的方法。
a
在做的时候,无论如何,我们都不应该把记录全部读到内存当中再选择需要的记录少了的话,还可以,要是表中有50万条记录呢?保证你会死掉
最好的方法:
我先问一个问题:真的会有很多时间需要支持很多种数据库的应用吗?不是吧?
如果的确真的是的话那么分别实现一套方法吧,然后用DAO模式来解决藕合度问题,把数据库操作的事情单拉出来吧!
下面给出Oracle/Sqlserver/MySQL三种数据库先出第m至第n条记录的方法:
获取按照F1字段升序排序的,从m至n行记录
注意,F1一定要做索引或主键,最好是主键
SqlServer
select t2.* from (Select top n-m t1.* from (Select top n * from Tablename as t order by t.F1) as t1 order by t1.F1 desc) as t2 order by t2.F1
select t2.* from
(
select top 20 t1.* from
(
select top 500020 * from dbgen as t order by t.F1
)
as t1 order by t1.F1 desc
)
as t2 order by t2.F1
Oracle
select * from (select rownum r, t.* from Tablename t where r<n) t1 where t1.r > m and t1.r <= m
select * from (select rownum r, t.* from DBTEST t where rownum<300020) ss where ss.r > 300000 and ss.r <= 300020
MySQL
最简单
select * from Tablename t order by t.F1 limit n,m-n+1
select * from DBtest t order by t.F1 limit 300000,20
性能对比:
三者差不多少!
上面实例中的语句在50万条记录的表中选取第50万左右的记录20条,均不超过1秒。
其它数据库我相信也能找到差不多的方法。
a
- 从Oracle关系数据库中选取第m至第n行记录
- 发现自己没戏了 数据库分页显示 从数据库中选取第m到n行记录
- 数据库中,从第N条记录开始,取M条记录的select语句写法
- 随机从数据库中选取记录
- oracle 获取第M到第N条记录
- 从[0,n)中选取不重复的m个数
- OC----从N个数中选取M个数的组合
- 从n个数中选取m个数的所有组合
- 取第m页记录
- Oracle/Sqlserver/MySQL三种数据库选取第m至第n行记录(zt)
- 学习数据库:SqlServer 2005之查询第m至第n条记录
- 从第n条记录开始查询第M条记录
- SQL查询 从第N条记录开始显示M行
- Java 实现m个数全排列组合以及从M中选取N个数(有序)
- 随机从oracle数据库取N条记录
- 数据库取n-m条记录
- 从n个元素中选取第k大的元素,设计一个算法并说明算法复杂度
- oracle用with语句查询第N到第M条记录
- (转)备份linux操作系统
- Apache Tomcat服务器配置基础
- 我的Thinking in Java读书笔记(1)
- 我的Thinking in java读书笔记(2)
- NFS 方式安装ThizLinux
- 从Oracle关系数据库中选取第m至第n行记录
- 好的对话框的重要性
- 买书
- C#程序编码规范
- DotNet面向对象开发框架规划
- 网络经典命令
- IP 路由命令详解
- 汉字转化为拼音
- 鱼对水说