Sybase的分页,可以说,不是一般的难做。因为这数据库本身,支持太差。搞不懂为什么一个商业数据库,这么基本的功能,都弄的这么难做。
想起一段话:做简单的事情要简单,复杂的事情要能做。
分页查询,应该归入简单的事情吧!
在网上找到的,关于分页查询的SQL,看上去都挺有道理的,放到Sybase上一跑,就发现,几乎全部不能运行,直接给你报错。
我认为问题主要集中在Sybase对子查询的支持上。Sybase对子查询的支持,非常非常的有限。所以,先说说Sybase对子查询的支持吧!
网上有一篇博客,写的不错,说的是Sybase支持与不支持的子查询:
SYBASE数据库支持与不支持的子查询语句的归纳总结
当我看到支持 >, <, in, not in 的子查询时,有点狂喜,认为一句SQL能搞定分页的。于是,我欣喜的写下以下2种方案:
方案一(不能用的哦):
select top <pageSize> *
from <table>
where <id> > (select max(<id>)
from (select top (<pageSize> * (<pageNum> - 1))
from <table>
order by <id>)
order by <id>)
order by <id>
方案二(同样不行的哦):
select top <pageSize> *
from <table>
where <id> not in (select top (<pageSize> * (<pageNum> - 1))
from <table>
order by <id>)
order by <id>
想归想,写的时候,就发现 方案一 很不靠谱。在子查询里面 再用 子查询,并且 还用在from里面,不靠谱,很不靠谱。一运行,果然不能跑。
方案二,看上去挺好,只有一个子查询,并且是Sybase支持的类型,是真支持的。但是(不好意思,还是转折了),很遗憾的告诉你,也是不能跑的。
这个方案有2个问题:
1、子查询中,用了top。Sybase的子查询中,不能用top的,测了才知道;
2、子查询中,用了order by。Sybase的子查询中,是不能用order by的,测了才知道。
现在看来,除了写存储过程外,真的没办法了。
但是,不愿意用存储过程。
只能分多条SQL来完成这一件事。
于是,就出现了以下方案:
方案三(可以用):
select top (<pageSize> * (<pageNum> - 1))
from <table>
order by <id>
从上面SQL中取出 max(id)
select top <pageSize> *
from <table>
where <id> > max(id)
order by <id>
这样分2个SQL,在数据库之外,找出前N-1页最大的ID,作为第2个SQL的条件,来完成分页查询。
虽然麻烦点,也算是一种解决方案吧!
暂时还没想到更好的方案,谁有的话,告诉我呀。
分享到:
相关推荐
这种情况下,就需要在数据库层面实现高效的分页查询机制。本文将详细介绍如何在 Sybase 中通过编写存储过程来实现分页功能。 #### 存储过程概述 在 Sybase 中,存储过程是一种预编译的 SQL 代码块,它可以接受输入...
本篇文章将详细讲解如何利用JDBC在Sybase数据库中进行高效的分页查询。 首先,理解分页的基本概念。分页是将大结果集分割成较小的部分,每次只返回一部分数据,通常由页码和每页记录数来定义。在Sybase中,可以使用...
在众多的SQL操作中,分页查询是数据库管理员和开发人员频繁使用的场景之一,尤其是在处理大量数据时,有效地进行分页不仅能够提升查询性能,还能优化用户体验。以下是对分页SQL查询技术的深入解析,旨在帮助读者理解...
sybase分页存储过程(代码),分页存储过程代码,实现sybase数据库分页查询。
标题中的“sybase通用分页模块”指的是在Sybase数据库管理系统中实现的一种功能,用于处理大量数据时的分页查询。这种模块对于提高系统性能、优化用户体验至关重要,尤其是在数据分析、报表展示或者网页应用中,用户...
总之,Sybase分页优化带排序是一个涉及多方面技术的问题,包括选择合适的分页方法、利用窗口函数、优化索引、使用存储过程等。在实际操作中,应根据具体的数据规模、查询模式和系统资源来制定最佳策略。通过这些方法...
在处理大数据集时,分页查询是必不可少的技术,它允许用户逐步加载和查看结果,减轻服务器压力,提升用户体验。本文将深入探讨"sybase海量数据分页瞬间完成2.0"这一主题,以及相关的JDBC分页和代码分页策略。 首先...
无论是数据库查询结果的分页展示,还是长篇文章的分页阅读,都需要一个高效、灵活的分页解决方案。BluePage正是为了满足这一需求而设计的通用分页类库。 #### 二、设计原则 1. **分页与SQL无关**:分页逻辑应该...
- **Archived Database Access**:归档数据库访问功能在所有平台上均支持,便于历史数据的查询和分析。 #### 重要注释 - 功能的可用性可能因不同的ASE版本而异,请参考ASE数据表了解各版本间的差异。 - SSL、...
启用该插件后,分页条将采用更为合理的格式显示,读取系统模板,不用重建,即刻生效。 更新记录: [08.12.23] 修正了当前页数为第1页或最后页时上下页导航出错问题 [08.09.12] 修正当前页数大于显示页数后无法...
本文将深入探讨“独立的跨数据库的分页”这一主题,结合Java编程语言,阐述如何实现对Oracle、Sybase、SQL Server、MySQL等不同数据库系统的通用分页查询。 首先,我们需要理解什么是分页。分页是一种将大量数据...
3. **性能优化:**针对大型数据集的查询,应考虑分页查询等技术以提高系统的响应速度。 4. **资源管理:**使用`using`语句可以自动释放资源,避免内存泄漏等问题的发生。 综上所述,通过C#和ODBC连接Sybase数据库的...
SQL Anywhere 5.0是由Sybase公司开发的一款轻量级数据库管理系统,它以其强大的移动和嵌入式数据库解决方案而闻名。在中石油等大型企业中,SQL Anywhere常用于管理各种关键业务数据,确保在分布式环境下的高效运行和...
- SYBASE中的分页查询可能需要使用特定的语法或函数来实现,而**ORACLE**提供了更简便的解决方案。 **2. 聚合函数支持** - **SYBASE**与**ORACLE**都支持常见的聚合函数,但在一些高级聚合功能上可能有所不同。 ...
分页的基本原理是将查询结果集按照一定的规则进行分割,每次只展示其中的一部分。具体步骤包括: 1. **确定每页显示的记录数**:这是分页的基本参数。 2. **计算总页数**:根据总的记录数和每页显示的记录数计算出总...
- 通过适当的配置,Sybase可以查询其他类型的数据库系统。 11. **用子查询替换连接** - 在某些情况下,使用子查询可以替代复杂的表连接,提高查询效率。 #### 五、查询优化 1. **实现结构化查询提示** - 使用...
分页查询在大数据量场景下常见,通过LIMIT或OFFSET/FETCH关键字(具体语法取决于数据库系统)来限制返回结果的数量,同时结合ORDER BY来控制顺序。避免全表扫描,可以结合索引来提高分页效率。 2.4 使用 tempdb ...
Sybase IQ 15.4提供了分页技术来增加可用内存,并通过监控交换的实用程序来监控内存的使用情况。服务器内存是数据库性能的关键,因此需要管理好缓冲区高速缓存的大小。缓冲区高速缓存的大小应根据数据库的实际工作...
本手册《Sybase IQ 15.1 性能调优手册》旨在为用户提供一套全面的性能调优指南,帮助用户了解如何优化Sybase IQ 15.1的数据查询、连接以及其他操作,从而提高整体系统的性能。该文档覆盖了从基本的查询优化到高级的...