各位老师好:
现在遇到一个问题想请教各位,请给以指点,谢谢!
案例:
数据库表中有大量数据(数以上千万计),我想每次从此表中提取N(大于100条)条数据,并在表中更新提取到的N条数据状态,请问有什么好的解决方案?通过游标可以实现,但性能会不会太低?
请大家给出好的解决方案,谢谢各位!
补充:不止一台机器去提取,可能会有几台机器同时去提取。
SQLSERVER 2005数据库
提取的时候还要更改提取到的记录状态,大家认真考虑一下,谢谢
嗯,如果有索引的话,
要提高性能的话,合适的建立索引是有必要的,同时你这种情况,可以考虑编写分页存储过程,每次取一部分数据,效率会更高!
你每次只是取N条数据 ,在数据库里做分页要加上索引,在页面上用DataTable接收、处理和更新(更新的时候加上事务)你的数据
游标?你搞笑的把。
使用行版本或时间戳(rowversion,timetemp)。然后Updata top N ,最后Select Deleted 表(因为Updata其实是Delete+Add, selected added表也行)。
当然最好有主键,或者要排序的行上有索引。
上千万计最好就是分库分表,建立关键索引,索引不要一般不要5、6个。 存储过程读取分页数据。 这样子就差不多了
模拟成一条一条更新就行了啊. 也就100来次