分享更有价值
被信任是一种快乐

Oracle分页+付上Sql Server分页+千万级数据分页的存储过程是怎样的

文章页正文上

这篇文章给大家介绍Oracle分页+付上Sql Server分页+千万级数据分页的存储过程是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。SELECT * FROM
(
SELECT A.*, rownum r
FROM
(
SELECT *
FROM a_matrix_navigation_map) A
WHERE rownum ) B
WHERE r > 0第三种SELECT * FROM table WHERE ROWNUMminus
SELECT * FROM table WHERE ROWNUM第四种可以用变通一点的办法,我给个示例:sql = “select a_id,a_title,a_author,aID,a_time,a_readtime,sID from article order by a_id”;int a;
while (rs.next()) {
a++;
if (a=ipage+spage)continue;

}
其中第二种是非常成熟的分页
我的实例~ 即可实现 类似limit 功能$bandanspager=”select * from abc t2,abc1 t1 where t1.id=t2.id group by t1.id”;
$sql=” SELECT * FROM
(
SELECT A.*, rownum r
FROM
( “.$bandanspager.”) A
WHERE rownum
WHERE r > 0Oracle不支持类似于 MySQL 中的 limit. 但你还是可以rownum来限制返回的结果集的行数.如果你只希望返回前十行纪录,你可以这样写:SELECT * FROM table WHERE ROWNUM
但是下面的语句是不对的:SELECT * FROM table WHERE ROWNUM>90 AND ROWNUM
这是因为 Oracle 认为这个条件不成立,所以没有返回。
你应该这样写:SELECT * FROM table WHERE ROWNUMminus
SELECT * FROM table WHERE ROWNUM
其他数据库模拟实现mysql的limit语法假如我有个user表,我想查询符合某些条件的第50个用户开始的10个用户,且不能使用id号between and那样查询,应该怎么写SQL语句?  在mysql数据库中有limit,offset语句可以方便的实现,那么在SQL server中呢?S免费主机域名QL Server是否支持limit和offset语句呢?select top 10 * from
(select top 60 * from [user] order by userid) aa
order by userid desc
  oracle,如果想从表中取出按照某字段排序前M到N条记录  下面的ORACLE语句是最好的:SQL> select ID from
(
select ID , rownum as con from
(
select ID from TestSort order by ID
)
where rownum )
where con >= 2; /*M 值*/
ID
———-
2
3

SqlServer分页:一条SQL语句搞定Sql Server 2000 分页千万级数据分页的存储过程:
引用自:Oracle分页(limit方式的运用)+付上SqlServer分页+千万级数据分页的存储过程/*
经测试,在 14483461 条记录中查询第 100000 页,每页 10 条记录按升序和降序第一次时间均为 0.47 秒,第二次时间均为 0.43 秒,测试语法如下:
exec GetRecordFromPage news,newsid,10,100000
news 为 表名, newsid 为关键字段免费主机域名, 使用时请先对 newsid 建立索引。
*//*
函数名称: GetRecordFromPage
函数功能: 获取指定页的数据
参数说明: @tblName 包含数据的表名
@fldName 关键字段名
@PageSize 每页记录数
@PageIndex 要获取的页码
@OrderType 排序类型, 0 – 升序, 1 – 降序
@strWhere 查询条件 (注意: 不要加 where)

*/
CREATE PROCEDURE GetRecordFromPage
@tblName varchar(255),– 表名
@fldName varchar(255),– 字段名
@PageSize int = 10, — 页尺寸
@PageIndex int = 1, — 页码
@OrderType bit = 0, — 设置排序类型, 非 0 值则降序
@strWhere varchar(2000) = ” — 查询条件 (注意: 不要加 where)
ASdeclare @strSQL varchar(6000)– 主语句
declare @strTmp varchar(1000)– 临时变量
declare @strOrder varchar(500) — 排序类型if @OrderType != 0
begin
set @strTmp = ‘ set @strOrder = ‘ order by [‘ + @fldName + ‘] desc’
end
else
begin
set @strTmp = ‘>(select max’
set @strOrder = ‘ order by [‘ + @fldName +’] asc’
endset @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from [‘
+ @tblName + ‘] where [‘ + @fldName + ‘]’ + @strTmp + ‘([‘
+ @fldName + ‘]) from (select top ‘ + str((@PageIndex-1)*@PageSize) + ‘ [‘
+ @fldName + ‘] from [‘ + @tblName + ‘]’ + @strOrder + ‘) as tblTmp)’
+ @strOrderif @strWhere != ”
set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from [‘
+ @tblName + ‘] where [‘ + @fldName + ‘]’ + @strTmp + ‘([‘
+ @fldName + ‘]) from (select top ‘ + str((@PageIndex-1)*@PageSize) + ‘ [‘
+ @fldName + ‘] from [‘ + @tblName + ‘] where ‘ + @strWhere + ‘ ‘
+ @strOrder + ‘) as tblTmp) and ‘ + @strWhere + ‘ ‘ + @strOrderif @PageIndex = 1
begin
set @strTmp = ”
if @strWhere != ”
set @strTmp = ‘ where (‘ + @strWhere + ‘)’ set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from [‘
+ @tblName + ‘]’ + @strTmp + ‘ ‘ + @strOrder
endexec (@strSQL)GO关于Oracle分页+付上Sql Server分页+千万级数据分页的存储过程是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

相关推荐: 如何使用zabbix监控mongod

如何使用zabbix监控mongod,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1 被监控端写mongodb.sh注意:里面的路径和你的端口要看自己的实际情况2 编辑zabbix_agent…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册