关于提高查询速度...(300分)

  • 主题发起人 主题发起人 Kent
  • 开始时间 开始时间
K

Kent

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在有三个表
d5+bde+access97
1.城市代码 40条纪录
城市代码 城市名称(关联企业所在城市代码:一对多)
2.企业信息表 1000左右
企业代码(关联数据表中的企业代码) 企业所在城市代码(关联城市代码)
3.数据表 10万左右

数据日期 企业代码 进出口标志 金额
我现在要查询 地市的进出口总值
我是这样处理的,由于在数据表中直接看不出地市信息,

所以我生成了一个临时表

4.temp

地市代码 金额
a.把地市代码库中所有地市代码加到temp的地市代码字段中

b.根据temp库中的地市代码到企业代码库中把隶属该地市的
所有企业取出,然后判断数据表中的每一条纪录是否是这些企业中的
是的话,统计,否则,不统计
SQL:

'select sum(金额) from 数据表 where 企业代码 in (select 企业代码 from 企业代码库 where 企业所在地市 like '+'"'+temp.fields[0].asstring+'"');
但是速度很慢,查询几十个地市的话要十几分钟...
请问各位,上面的查询是不是还可以优化一下...
或者有什么方法能够提高速度...

 
select C.城市代码, sum(D.金额) from 城市表 C,企业表 E,数据表 D where
D.企业代码 = E.企业代码 and E.城市代码 = C.城市代码 group by
C.城市代码
试试
 
你可以在Form Create时将Temp的暂存盘加载到RAM内。
例如宣告
type // 写入系统暂存盘
TUnreadMsg=record
end;

然后将资料一笔笔写入,这样必定加快资料查询的速度。
 
做一个View(视图)啦, 这样最快
 
我也想知道提高数据查询速度的方法!
 
两个建议:
1.动态创建两个table,利用它的主从关系。//可能不会很好
2.利用子查询
select Sum(金额) from 数据表
where 企业代码=(
select 企业代码 from 企业表
where 城市代码=参数:城市代码
)
没有实际执行,不知道语法有没有错误 :-)
3.建立视图
 
同意urlzo的做法,每张表的城市代码和企业代码加上索引,我想统计全部
也就几分钟吧。
 
这类的问题我也常遇到,Urlzo是相对比较快的。
还有access97本身的效率问题,它毕竟是小型数据库,提供的功能有现。
最好用SQL Server最好,再大一些的数据就不适合小小型软件的使用了。
我用过一个非常复杂的SQL语句有你这个的几十倍的复杂。
用9号字在记事本中写了两屏幕。
在access97中有两千条记录就给我查了8分钟,
而有SQL Server中有10万条记录,它只用了三秒。
 
多人接受答案了。
 
后退
顶部