当前位置:首页 » 数据仓库 » sybase数据库分页
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sybase数据库分页

发布时间: 2022-12-22 18:35:29

Ⅰ 如何修改sybase 数据库的页面大小

Sybase的page size是在创建服务名时指定的,服务创建后,该服务下面包含的所有数据库的page size就固定了,没法修改,只有重建服务重新指定.
如果是windows平台,在使用sybase\ASE-12_5\bin\syconfig.exe创建服务时可以指定页面大小,如果是unix或linux平台,则在rs资源文件中指定页面大小.

Ⅱ (问题解决再追加100分)sql server存储过程实现查询数据条数过大,分页查询怎么实现

按说5-8w这样数量级的数据没有问题,写入Excel是布比较耗性能,主要还是要通过优化写入Excel的代码效率上去考虑。你可以考虑利用分批查询写入的方式来避免一次写太多的数据到Excel:将你的查询结果分段,比方你的语句中能不能用时间来认为分段,每次返回部分结果。
回到你的问题,对大数据量查询的解决方案有以下两种:
(1)、将全部数据先查询到内存中,然后在内存中进行分页,这种方式对内存占用较大,必须限制一次查询的数据量。
(2)、采用存储过程在数据库中进行分页,这种方式对数据库的依赖较大,不同的数据库实现机制不通,并且查询效率不够理想。以上两种方式对用户来说都不够友好。

2.解决思路
通过在待查询的数据库表上增加一个用于查询的自增长字段,然后采用该字段进行分页查询,可以很好地解决这个问题。下面举例说明这种分页查询方案。

(1)、在待查询的表格上增加一个long型的自增长列,取名为“queryId”,mssql、sybase直接支持自增长字段,oracle可以用sequence和trigger来实现。然后在该列上加上一个索引。
添加queryId列的语句如下:
Mssql: [QUERYID] [bigint] IDENTITY (1, 1)

Sybase: QUERYID numeric(19) identity

Oracle:
CREATE SEQUENCE queryId_S
INCREMENT BY 1
START WITH 1
MAXVALUE 999999999999999 MINVALUE 1
CYCLE
CACHE 20
ORDER;
CREATE OR REPLACE TRIGGER queryId_T BEFORE INSERT
ON "test_table"
FOR EACH ROW
BEGIN
select queryId_S.nextval into :new.queryId from al;
END;

(2)、在查询第一页时,先按照大小顺序的倒序查出所有的queryId,
语句如下:select queryId from test_table where + 查询条件 +order by queryId desc 。
因为只是查询queryId字段,即使表格中的数据量很大,该查询也会很快得到结果。然后将得到的queryId保存在应用服务器的一个数组中。

(3)、用户在客户端进行翻页操作时,客户端将待查询的页号作为参数传递给应用服务器,服务器通过页号和queyId数组算出待查询的queyId最大和最小值,然后进行查询。

算出queyId最大和最小值的算法如下,其中page为待查询的页号,pageSize为每页的大小,queryIds为第二步生成的queryId数组:
int startRow = (page - 1) * pageSize
int endRow = page * pageSize - 1;
if (endRow >=queryIds.length)
{
endRow = this.queryIds.length - 1;
}
long startId =queryIds[startRow];
long endId =queryIds[endRow];

查询语句如下:
String sql = "select * from test_table" + 查询条件 + "(queryId <= " + startId + " and queryId >= " + endId + ")";

3.效果评价
该分页查询方法对所有数据库都适用,对应用服务器、数据库服务器、查询客户端的cpu和内存占用都较低,查询速度较快,是一个较为理想的分页查询实现方案。经过测试,查询4百万条数据,可以在3分钟内显示出首页数据,以后每一次翻页操作基本在2秒以内。内存和cpu占用无明显增长。

以上也仅仅是分页查询结果查看的问题,你需要写入到Excel的话还需要考虑Excel写入代码的执行效率,这部分是很值得研究的。

Ⅲ DB2分页查询改成sybase的,求高手!在线等!!!高分回报,答案正确有追加分,谢谢!!!

sybase没有rownumber() 这样的排名函数呀?表有自增id吗

Ⅳ sybase 分页--在线等

没有简单的办法。
要不你的程序中专门设计一个函数,用于跳过结果集,来模拟数据库的top 和 rownum功能。

Ⅳ sybase怎样实现分页查询

ect[] argus =
{
Integer.toString(recNum),
Integer.toString(recNum * (pageNum - 1)),
table,
cond1,
cond2,
field };
StringBuffer sqlstr = new StringBuffer("set rowcount {1}\n");
sqlstr.append(
"select id into #tmptable from {2} {4} order by id desc\n");
sqlstr.append("set rowcount {0}\n");
sqlstr.append(
"select {5} from {2} where id<(select min(id) from #tmptable) {3} order by id desc\n");
sqlstr.append("drop table #tmptable");

Ⅵ 每翻一页,都去数据库中查一次。这种分页效果用java怎么写

在用jdbc访问某个数据库,并读出一个resultset数据记录集时,如果记录数太大,则会占用客户端(运行java程式的机器)的大量内存(如果客户端是某个大企业的营业部门的代理点分机,则有可能java程式会占用完全部内存,然后报错),并且会造成客户端负载过重,运行速度极度缓慢(在sybase数据库中,我曾做过一个测试。选择某个大数据记录,sql语句运行完需要4分钟,而在java客户端完全显示出来,则需要将近10分钟)。解决方案:
给用户提供一个可选择分页显示的选项,如果用户不想分页显示则完全显示,否则分页显示。

1.定义一个分页数全局常量,即每页显示的数据条数。

private final static int skip = 100;

2.定义一个确定某个分页条数的全局变量,即该显示页的当前显示数据条数。

private static int cur = 0;

3.定义一个resultset全局变量,以便多次使用

private static java.sql.result rs = null;

4.打开一个数据库连接[/pre]

class.forname( sqldriver );java.sql.connection conn = drivermanager.getconnection( url, (string)username,(string)passwd)statement stmt = conn.createstatement();string searchsql = "......";rs = stmt.executequery(searchsql);

Ⅶ sybase数据库是否支持查询分页

sybase不支持分页查询。要想分页查询需自己写存储过程

Ⅷ Sybase数据库怎么分页,要写存储过程吗

Sybase数据库中的高效分页方法

Sybase使用rank() over(order by id)ret的方式分页,这种方式在数据量达到40W条的时候很耗时,大概5S的时间,当达到千万条的时候,查询一次大概是1分40秒

对于这种方式,瓶颈可能是出在排序部分,当排序的唯一字段是varchar类型的时候更加明显

现在有种新的方式,就是利用rowid。
如:select a.* from table_name a where rowid(a) >=1 and rowid(a)<11

经测试,在同一张表中,1500W的数据量,每次查询时间都在200ms以内
但是这个函数只能用在真实的数据表,无法在临时表中用到;

这个rowid,是在数据插入的时候,数据库给每行数据分配的物理唯一标识,如果要页面中要用到动态排序,这个是不支持的。

Ⅸ sybase powerbuilder 10.5里数据窗口里的数据怎么分页显示

分页显示是什么意思呢?是分栏显示吧?

如果是的话,在窗口open()事件里写:

dw_1.HSplitScroll = true //--数据窗口左右分栏
dw_1.Object.DataWindow.HorizontalScrollSplit = dw_1.object.列名.x //--设置分栏的分隔线位置

Ⅹ 如何修改sybase 数据库的页面大小

Sybase公司是世界着名的数据库厂家,其关系数据库产品SYBASE SQL Server在中国大中型企事业单位中拥有大量的用户。针对获取数据库相关信息也提供了对应的API,以便管理进行维护。
一.sp_spaceused 可看到数据库空间包括日志(对应数据库)
打开Sql Advantage 对话框——输入sp_spaceused(上边数据库选择要查的数据库)或直接
use your_db_name
go
sp_spaceused
go
运行!出现如下信息
Database name:数据库名称
Datebase Size:数据库空间总大小
Reserved:已分配空间
data数据:已分配空间中数据占用空间大小
index_size索引:已分配空间中index_size索引占用空间大小
unused:为已分配空间中未使用空间大小
计算关系:
reserved(已分配空间)=data+index_size+unused
剩余空间= Datebase Size(总空间)—已分配空间(resrved)

二.sp_helpdb db_name 可看到数据库占用的数据库设备device的空间信息(对应数据库设备和数据库)
打开Sql Advantage 对话框——输入sp_s helpdb db local(local为要看的数据库名字如不输入则显示所有数据库)
运行!显示如下信息:
(一).数据库方面
1. name:数据库名字
2. db_size:数据库空间大小
3. owner:数据库所有者
4. created:数据库创建时间
5. status:状态
(二).数据库设备方面
1. device_fragments:数据库设备名称
2. size:数据库占用数据库设备的空间大小 单位MB
3. usage:用法 用途
4. created:数据库占用的数据库设备的空间的创建时间
5. free kbytes :数据库占用的数据库设备的剩余空间 单位KB
6. log only free
kbytes:数据库日志设备中日志剩余空间 单位KB

注意:由于数据库创建后不一定全部占用数据库设备的所有空间,可以在以后通过增加的方法占用设备空间,因此每增加一次就会有一条数据库设备信息

计算关系:

剩余空间=所有free Kbytes(剩余KB)相加+log only
free Kbytes

数据库占用数据库设备总空间(size)=size1+size2+……..(所有相加)=数据库总空间(db_size)=
reserved(已分配空间)+剩余空间

free Kbytes(剩余KB)相加+log only free Kbytes= Datebase
Size(总空间)—已分配空间(resrved)