请教个小问题
jjqxt 2011-05-23 09:34:19 学了数据库那么久,就使用到的就只是普通的DML,很少研究索引那些,最近工作的时候需要处理16万条数据,耗时好久,实际测试麻烦,加上近来公司内对数据库索引的讨论,于是研究SQL语句优化。
举例更新如下一条数据:
a091 a0901 a0902 a0903 a0904
1 1 2 3 4
主键是a091
更新语句如下:
update A09 SET a0901=2,a0902=1 WHERE a0903=3 and a0904=4
重复1000次 平均1条执行时间是21毫秒
update A09 SET a0901=2,a0902=1 WHERE a091=(select a091 from A09 where a0903=3 and a0904=4)
重复1000次 平均1条执行时间是13毫秒
大概知道是主键索引起了作用,求达人解释下原理?是因为select 的where 比update 的 where 查询得快么?
还有我用实际的数据测试 反而是有子查询的耗时多了,这又是为什么?(之前看到个网摘,说ORACLE会缓存执行过的SQL语句,就是说重复两条一样的语句,会快点,是否是因为这个原因?)