大批量快速更新问题,急!
现有一程序需要在晚上业务空闲阶段大批量把白天保存的数据更新到记录中,
我使用如下格式的sql语句:
update table_x set update_col='xxxx' where key_xxx='xxxx'
其中,已经为key_xxx字段建立了索引,但不是cluster索引(我的程序无法获得cluster索引字段的值,因为记录由其他程序产生,所以不能使用cluster索引),而且它是不定长的字符串,对这种索引的效率我有点怀疑,但由于不在现场,无法跟踪sql语句的运行。
实际情况, 客户告知下午6点30分开始连续回填13个小时,只能回填1万多条记录。而一天的业务量可以产生2万到3万的记录。 而且每次回填时,数据库服务器的cpu利用率总会达到100%,服务器是双cpu,2GB内存。
程序流程:
程序根据设定的开始回填时间启动一个回填线程,每次从文件中读入200条回填信息,按上面的sql语句构造出所有update语句,程序适用C++ Builder开发,每次调用数据库组件execsql方法执行sql时都prepare一次。采用BDE ODBC连接方式。
问题:
1.sql是否每次都会自动选择并使用key_xxx字段的索引?如果不是,如何通过sql代码显式指定索引?
2.有哪些更好的优化方法?
诚心希望高手给予帮助! 等待中.....