pb9+asa8.03开发的数据库软件第一次运行非常慢求助

时间:2022-07-10 16:55:36
我使用pb9+asa8.03开发的数据库软件,使用ODBC配置的数据源,最大的表有60万条记录,是对这个表进行查询,由于查询条件是随意组装的,使用函数dw_2.SetSQLSelect来设置查询条件,第一次运行数据库,非常耗时,第二次查询就快多了,不知道什么原因?求助

5 个解决方案

#1


我知道是索引无法用上,做的是全表扫描造成的

执行计划为:
( Plan [ Total Cost Estimate: 26.17297 ] 
  ( TableScan t_hlcm_dsj_lsb[ t_hlcm_dsj_lsb.bcpd >=  '' : 100% Index ][ ( (  '2009-01-01' <= t_hlcm_dsj_lsb.rq <=  '2009-05-13' ) : 6% Guess ) AND ( t_hlcm_dsj_lsb.dq IN (  '福州',  '?..',  '重庆' ) : 59.32614312% Combined ) AND ( t_hlcm_dsj_lsb.bcpd LIKE  '%江苏.??' : 100% Computed ) ] )
)

由于我的表查询条件是任何组合的,导致不能使用索引

#2


1、在执行相同SQL语句时,基本上所有数据库都是第一次慢;
2、因为你的查询条件是任意的,无法优化。

#3




相同的select语句在第二次提交的时候,数据库系统会直接从缓存中取记录。不需要再分析,编译。

#4


该回复于2009-05-16 13:11:52被版主删除

#5


后来我知道原因了
是数据库的碎片造成的

我的数据库大小是自增的,这个造成了很多碎片

#1


我知道是索引无法用上,做的是全表扫描造成的

执行计划为:
( Plan [ Total Cost Estimate: 26.17297 ] 
  ( TableScan t_hlcm_dsj_lsb[ t_hlcm_dsj_lsb.bcpd >=  '' : 100% Index ][ ( (  '2009-01-01' <= t_hlcm_dsj_lsb.rq <=  '2009-05-13' ) : 6% Guess ) AND ( t_hlcm_dsj_lsb.dq IN (  '福州',  '?..',  '重庆' ) : 59.32614312% Combined ) AND ( t_hlcm_dsj_lsb.bcpd LIKE  '%江苏.??' : 100% Computed ) ] )
)

由于我的表查询条件是任何组合的,导致不能使用索引

#2


1、在执行相同SQL语句时,基本上所有数据库都是第一次慢;
2、因为你的查询条件是任意的,无法优化。

#3




相同的select语句在第二次提交的时候,数据库系统会直接从缓存中取记录。不需要再分析,编译。

#4


该回复于2009-05-16 13:11:52被版主删除

#5


后来我知道原因了
是数据库的碎片造成的

我的数据库大小是自增的,这个造成了很多碎片