我有两个表,目前一个A表是2~3万的数据, 一个B表是大约15000的数据。以后数据会更多的多,应该都能达到几十万数据。
每个秒都有十来个字段,其中都有IMAGE字段。不过我UPDATE的时候是不更新IMAGE字段的。
现在有一个动作要UPDATE这两个表N条记录。N可能是1~500,常规操作一次大约是10~50条。
可是每次执行都要好几秒钟(目前大多是5~9秒)(目前在测试,不是专业服务器,是一台PC单独 SQLSERVER)我想问一下怎么UPDATE的的效率更高?UPDATE A SET F1=XXXX, F2=SSSS, F3=XXXX WHERE PID IN [123,258,687,589,12,109...]
UPDATE A SET F1=XXXX, F2=XXXX, F3=XXXX WHERE PID=123 OR PID=258 OR PID 687.........
F1 是 VARCHAR F2是NUM F3是 INT
这两种方式有差别么?
还是应该用其他方法?? 谢谢。 我觉得这么点记录应该用不了这么长时间啊 其他类似的数据库操作多条记录的也没感觉很慢。就是这一步操作很费时间。
偶尔有时候UPDATE一条记录都要5秒多才返回。我在代码中注释掉 这两个表的UPDATE操作就明显快了很多啊。
每个秒都有十来个字段,其中都有IMAGE字段。不过我UPDATE的时候是不更新IMAGE字段的。
现在有一个动作要UPDATE这两个表N条记录。N可能是1~500,常规操作一次大约是10~50条。
可是每次执行都要好几秒钟(目前大多是5~9秒)(目前在测试,不是专业服务器,是一台PC单独 SQLSERVER)我想问一下怎么UPDATE的的效率更高?UPDATE A SET F1=XXXX, F2=SSSS, F3=XXXX WHERE PID IN [123,258,687,589,12,109...]
UPDATE A SET F1=XXXX, F2=XXXX, F3=XXXX WHERE PID=123 OR PID=258 OR PID 687.........
F1 是 VARCHAR F2是NUM F3是 INT
这两种方式有差别么?
还是应该用其他方法?? 谢谢。 我觉得这么点记录应该用不了这么长时间啊 其他类似的数据库操作多条记录的也没感觉很慢。就是这一步操作很费时间。
偶尔有时候UPDATE一条记录都要5秒多才返回。我在代码中注释掉 这两个表的UPDATE操作就明显快了很多啊。
假如PID已经是Key,那就没有必要建立索引了,感觉还是In好些,如果想测试的话,可以写一个程序自己测一下执行时间
楼下:
2.in的效率低吧,将in改成别的,exist
http://hi.baidu.com/%EE%B8%EE%B8/blog/item/0ba1ed037edb0e713912bbea.html
8、索引的设计 在设计阶段,可以根据功能和性能的需求进行初步的索引设计,这里需要根据预计的数据量和查询来设计索引,可能与将来实际使用的时候会有所区别。 关于索引的选择,应改主意: A、根据数据量决定哪些表需要增加索引,数据量小的可以只有主键。 B、根据使用频率决定哪些字段需要建立索引,选择经常作为连接条件、筛选条件、聚合查询、排序的字段作为索引的候选字段。 C、把经常一起出现的字段组合在一起,组成组合索引,组合索引的字段顺序与主键一样,也需要把最常用的字段放在前面,把重复率低的字段放在前面。 D、一个表不要加太多索引,因为索引影响插入和更新的速度。