如何提高操作大数据量表的速度(200百多万条记录)? ( 积分: 100 )

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

hzgaoqiao

Unregistered / Unconfirmed
GUEST, unregistred user!
对MS SQL sever 2000数据库操作,对有大数据量的表(有200多万条记录)操作时,速度很慢。特别是删除操作,不能用视图操作来代替,比如:delete from table where id=12时很慢。能对视图进行记录删除操作吗?不用存储过程,别人用VB写的速度很快,没有感觉停顿。如何解决?谢谢!
 
建索引??
 
已经有索引了。比如selet * from table where id=001 在只有一个记录的情况下打开也很慢。
 
不可能吧,有了索引删一条记录还很慢,sql server别混了.
 
索引是否合理.<br>这里ID常用,最好是群集索引.<br>复合索引时,&nbsp;这里ID应该是第一项.&nbsp;否则索引可能不起作用.
 
有索引,但表的记录有200百多万条,删多条慢,删除一条也超过5秒,服务器是普通电脑。但别人用VB没有停顿。对相同的数据库操作。这个问题以前有人提过,没有看到满意的答案。
 
你的操作工具.......
 
是你的程序代码有问题吧,&nbsp;界面有无刷新?&nbsp;有无后续操作发生?<br>用查询分析器执行相同的操作,&nbsp;如果索引合理的话,&nbsp;几条记录不可能慢
 
如果有索引的话不会很慢的,除非你的机器非常菜,我是指机器不是一般的菜!
 
帖以下你的处理方式?
 
救命啊?最近給Borland中國盯上了!請有正版Delphi使用授權的人幫助一下<br>QQ:10961560
 
索引问题。。。。参考《SQL&nbsp;SEVER权威指南》有答案的。
 
数据库文件放在本机(图拉丁1。3G,128M内存,XP操作系统)上测试。用VB程序做删除操作没有停顿,数据库是同一个。用delphi编的程序,用adoquery.sql='select&nbsp;*&nbsp;from&nbsp;table&nbsp;where&nbsp;id:=:id'打开,adoquery.delete再删除慢.所以就不考虑硬件问题,用VB的可以呀。修改、插入用视图操作可很快,问题是删除不能对视图操作。请注意表中有200百多万条记录。能用其它方法吗?
 
adoquery.sql&nbsp;:=&nbsp;'&nbsp;delete&nbsp;from&nbsp;table&nbsp;where&nbsp;id&nbsp;=&nbsp;:id&nbsp;'<br>adoquery.execsql;<br>这样删除又如何&nbsp;?
 
视图更新表需要写INSTEAD&nbsp;OF&nbsp;触发器<br>你可以跟踪一下vb写的程序传入的sql删除命令和d写的程序传入的sql删除命令,看区别在什么地方,就能解决了。
 
truncate&nbsp;TABLE&nbsp;表名
 
adoquery.sql&nbsp;:=&nbsp;'&nbsp;delete&nbsp;from&nbsp;table&nbsp;where&nbsp;id&nbsp;=&nbsp;:id&nbsp;'<br>adoquery.execsql;<br>在delphi6&nbsp;下用此法有的电脑上有时会出错,好象是有delphi6的补丁,不知怎么解决。
 
如果用参数不行,那么最简单的方法是用字符串替换,把&nbsp;:id&nbsp;换成&nbsp;10279&nbsp;之类的值。<br>&nbsp;&nbsp;另外,如果删除已经被别对用户所删除的记录,自然会失败。
 
后退
顶部