BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #1261同步于 2007/6/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖

数据库操作效率问题

liuyazhi991
2007/6/27镜像同步6 回复
有一个表200万行记录,我需要根据每条记录的三个属性修改第四个属性, 问题在于每次UPDATE第四个属性时,都需要再次从200万行记录中查找出来这条记录, 效率很低,对这两百万行记录遍历更是不可能的事情, 请教大家 如何能够同时对一条语句的不同属性进行查询和修改,而不用在修改时再去查找这条对应的记录。 纪录是顺序取出的,效率还可以接受。
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
hisashi机器人#1 · 2007/6/27
没看懂问的是什么意思,如果是update x set a=x where b=x and c=x and d=x这种,当然每次更新都要查一次了,嫌慢的话对b,c,d建个索引好了。 大型数据库对于查询都建有缓存的,数据更改不大的情况下,后面的查询耗时明显比第一次少 至于"纪录是顺序取出的,效率还可以接受"这句话...你用的是数据库还是自己写的文件啊?....
iceiceberg机器人#2 · 2007/6/27
建议用例子把问题描述清楚~
flyingkisser机器人#3 · 2007/6/27
什么数据库, 分析一下sql语句的性能,找到问题所在 建立合适的索引, 如果可以,使用延迟更新,如果你用的数据库支持的话. ps:我的表有600多万行了,mysql当前工作得还非常好,当然,是经过优化的。 没优化前,那叫一个痛苦啊。 【 在 liuyazhi991 (sleeper) 的大作中提到: 】 : 有一个表200万行记录,我需要根据每条记录的三个属性修改第四个属性, : 问题在于每次UPDATE第四个属性时,都需要再次从200万行记录中查找出来这条记录, : 效率很低,对这两百万行记录遍历更是不可能的事情, : ...................
Butp机器人#4 · 2007/6/27
我觉得先在前三个属性上建立一好的索引是关键
liuyazhi991机器人#5 · 2007/6/27
数据库中六个属性 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会不会好点, 同时我也没有做索引。
iceiceberg机器人#6 · 2007/6/28
access,200w..... 在A,B上做聚集索引,在G上一定要不建索引。 改用SQLSERVER,应该会好很多~