数据库程序如何加速(100分)

  • 主题发起人 主题发起人 herald
  • 开始时间 开始时间
H

herald

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一个delphi数据库程序(有索引的),现在有2万个记录,现在我发现由于记录的增加,无论是插入数据还是提取数据都变得很慢,比如我在数据库中提取2000个记录,要60秒.写100个新纪录也要15秒(celeron450的机器)以前我在数据库较小的情况下没有这样的问题.谁有这样的经验? 用TBATCHMOVE能不能解决问题??
 
用Batchmove是快一些,
不过,二万条记录应该很快。
你用什么类型的数据库,进行了些什么操作?
 
一个小建议:
如果你用SQL语句,请先prepare.
另:在对数据库操作时,最好不要遍历。
 
不要用RECORDCOUNT,FILTER,CALCFIELD等等
 
千万不要用Table
可能的话,多用存储过程,触发器,查询
 
PARADOX?
情愿用DBASE!速度快多了。
另:本地数据库,TABLE可以,QUERY反而慢
 
有这种事?看来我得注意了,我正在搞的这个系统每年会增加5万条记录,我很
想听听高手对这事的看法
 
对啦!记着少用query吧,最好不要用那种一下子发所有的记录都取出的方法,
不然话,你就。。。嘿嘿
 
>对啦!记着少用query吧,
也不是那么说:)
9万条?劝你至少用Local Interbase
 
我在程序中遍历了数据库,但是没有使用sql语言.而是使用了table.xxxxx来完成任务
是不是这个原因?
 
1.不要遍历数据库!
2.SQL语句也没有遍历的功能吧?
3.你遍历数据库干什么? 用sql语句查询你要的纪录不就可以了?
 
???
我的意见恰恰相反,多用用QUERY执行SQL语句
 
用sql语句,对检索字段建索引。
 
换用Interbase,善用存储过程,触发器,视图等大幅提高效率。
 
千万不要用table, 用query来过滤一下就会快很多, 遍历就会非常非常慢了:-(
 
对网络数据库,比如c/s模式的,建议多用query,速度比用table快很多.
在进行开发时,应多用存储过程,能在服务器上完成的操作,千万不要下到
客户机上来完成.对记录数大的表,应多建立视图.
对触发器建议少用,虽然可以简化一些编程,但控制不灵活,有时会出现不可预期
的问题.建议还是用程序控制的好.
对本地库用table和query的速度差不多,dbase的性能是很不错的.
对使用频繁的表,可以建一个链表来存储,把对表的查询转化为对链表
的遍历,速度很快.
就想到这么多.
 
1.到现在还不知你用什么数据库,不同的数据库有不同的技巧。
2.遍历数据库有时是需要的,这是数据结构和算法就很有讲究了。
3.C/S情况下有时TTable反比TQuery快,需要具体情况分析。
 
2万条记录就发生这种事,一定是程序编码的问题。如果是本地数据库,用TTABLE表比TQuery快得多。我曾经对一个比较大的本地数据库尝试过许多次,Filter速度比SQL 查询速度快得多。
 
李维的<Delphi3.0从入门到精通>对数据库的使用,(用Table or Query)
等有很好的讲解,数据库的效率等. 共有好几章.
 
在单层中用TTable,
在多层中用TQuery,
尽量用视图或存储过程、触发器的,在程序中少用SQL语句。
在三层中最好少用DBGrid.尤其是Internet
 
后退
顶部