返回信息流有一个表200万行记录,我需要根据每条记录的三个属性修改第四个属性,
问题在于每次UPDATE第四个属性时,都需要再次从200万行记录中查找出来这条记录,
效率很低,对这两百万行记录遍历更是不可能的事情,
请教大家 如何能够同时对一条语句的不同属性进行查询和修改,而不用在修改时再去查找这条对应的记录。
纪录是顺序取出的,效率还可以接受。
这是一条镜像帖。来源:北邮人论坛 / database / #1261同步于 2007/6/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖
数据库操作效率问题
liuyazhi991
2007/6/27镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
没看懂问的是什么意思,如果是update x set a=x where b=x and c=x and d=x这种,当然每次更新都要查一次了,嫌慢的话对b,c,d建个索引好了。
大型数据库对于查询都建有缓存的,数据更改不大的情况下,后面的查询耗时明显比第一次少
至于"纪录是顺序取出的,效率还可以接受"这句话...你用的是数据库还是自己写的文件啊?....
什么数据库,
分析一下sql语句的性能,找到问题所在
建立合适的索引,
如果可以,使用延迟更新,如果你用的数据库支持的话.
ps:我的表有600多万行了,mysql当前工作得还非常好,当然,是经过优化的。
没优化前,那叫一个痛苦啊。
【 在 liuyazhi991 (sleeper) 的大作中提到: 】
: 有一个表200万行记录,我需要根据每条记录的三个属性修改第四个属性,
: 问题在于每次UPDATE第四个属性时,都需要再次从200万行记录中查找出来这条记录,
: 效率很低,对这两百万行记录遍历更是不可能的事情,
: ...................
数据库中六个属性 A B C D E G
select A B C D E form tableX
a=A
b=B
c=C
d=D
e=E
g = f(c,d,e);
update tableX set G = g where A = a and B = b;
其中A B联合作为主键。
每次update 很费时间,用的access,c#
不知道换成sql 2005会不会好点, 同时我也没有做索引。