面试时遇到的笔试题:查询31-40条记录
2012-10-26 14:30
399 查看
面试中经常会遇到,查询31-40条记录的笔试题目,一般情况下ID是不连续的:
ID连续:
select * from A where ID between 30 and 40;
ID不连续:
1. 此种写法效率非常低:
select top 10 * from A where ID not in (select top 30 ID from A);
2. ROW_NUMBER函数效率高,该写法只支持sqlserver2005及以上版本:
select * from (select ROW_NUMBER() over(order by ID) as 'sequence',A.* from A ) as t where t.sequence between 31 and 40;
3. 海量数据做查询时更高效:
select top 10 * from A where id in (select top 10 id from (select top 40 id from A order by ID desc) as t order by t.ID ) order by A.ID desc;
4. sqlserver2012最新写法:
select * from A order by id offset 30 rows fetch next 10 rows only;
5. 支持多数据,支持多排序字段,效率高:
select top 10 *
from a
where id in (select top 10 id
from (select top 40 id from A order by ID desc) as t
order by t.ID)
order by t.ID desc;
6. 效率勉强可以:
select top 10 * from (select top 40 * from A order by ID) as t order by t.ID desc;
7. 此方法不一定适用于所有数据库,自行测试:
select * from A order by A.ID asc LIMIT 30,10;
欢迎继续补充............
ID连续:
select * from A where ID between 30 and 40;
ID不连续:
1. 此种写法效率非常低:
select top 10 * from A where ID not in (select top 30 ID from A);
2. ROW_NUMBER函数效率高,该写法只支持sqlserver2005及以上版本:
select * from (select ROW_NUMBER() over(order by ID) as 'sequence',A.* from A ) as t where t.sequence between 31 and 40;
3. 海量数据做查询时更高效:
select top 10 * from A where id in (select top 10 id from (select top 40 id from A order by ID desc) as t order by t.ID ) order by A.ID desc;
4. sqlserver2012最新写法:
select * from A order by id offset 30 rows fetch next 10 rows only;
5. 支持多数据,支持多排序字段,效率高:
select top 10 *
from a
where id in (select top 10 id
from (select top 40 id from A order by ID desc) as t
order by t.ID)
order by t.ID desc;
6. 效率勉强可以:
select top 10 * from (select top 40 * from A order by ID) as t order by t.ID desc;
7. 此方法不一定适用于所有数据库,自行测试:
select * from A order by A.ID asc LIMIT 30,10;
欢迎继续补充............
相关文章推荐
- 查询 31到40条记录 的各种玩法
- 2013年面试时遇到的笔试题记录
- 查询 31到40条记录 的各种玩法(分页可以支持海量数据5百万,时间大约在1--5秒)
- Android笔试面试记录
- 笔试、面试遇到的问题
- Data Base sqlServer 查询表中31到40的记录,考虑id不连续的情况
- 一些笔试面试时遇到的以及自己准备的题目
- 数据库->SQL Server2005->随机遇到问题->查询name重复,id不重复,时间最新的记录
- 用SQL查询Table中的第31条到40条记录(考虑不连续情况)
- 面试笔试记录:C++
- hibernate 分页查询求总记录数遇到的问题
- MySQL查询语句练习题(面试时可能会遇到哦!)
- 笔试面试中遇到的一些智力题总结和思考,欢迎补充和指正
- 【笔试面试——31】链表11——检测两个链表是否相交
- sql去重问题(最近java笔试总遇到这个问题,忍不住要记录一下)
- 笔试面试那件小事(数据库SQL查询续)
- 记录几个前端笔/面试中常遇到的算法
- C++笔试面试遇到的问题
- 笔试面试目前遇到常见的问题:tip/ip的建立过程
- 对接京东jos遇到的坑 记录一下。方便查询