锁定老帖子 主题:不要迷信所谓的“SQL优化原则”
精华帖 (0) :: 良好帖 (11) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-13
我就是来顶你一下哈
|
|
返回顶楼 | |
发表时间:2011-02-10
冲着标题来的。。。看到内容闪了
|
|
返回顶楼 | |
发表时间:2011-02-14
最后修改:2011-02-14
突然想到一些事情: 总是有人试图证明爱因斯坦是错误的。
|
|
返回顶楼 | |
发表时间:2011-02-15
也谈谈预编译和非预编译的优劣:
对于执行时间有好几秒的的SQL,从性能的观点出发的话,最好使用非预编译,这样的话,优化器能够根据你传的实际值来制定更加优良的计划。 举个例子: 有个id auto increament的表,有10万条数据。 非预编译: select * from table where id<10 优化器会让查询走索引, 全表扫是很慢的 select * from table where id<99990 优化器知道全表扫描更好, 此时走索引要慢很多倍 而预编译 select * from table where id<? 不管是查10,还是99990,都只有一种执行计划,性能怎么样就只能靠人品了。 |
|
返回顶楼 | |
发表时间:2011-02-16
zzhonghe 写道
也谈谈预编译和非预编译的优劣:
对于执行时间有好几秒的的SQL,从性能的观点出发的话,最好使用非预编译,这样的话,优化器能够根据你传的实际值来制定更加优良的计划。 举个例子: 有个id auto increament的表,有10万条数据。 非预编译: select * from table where id<10 优化器会让查询走索引, 全表扫是很慢的 select * from table where id<99990 优化器知道全表扫描更好, 此时走索引要慢很多倍 而预编译 select * from table where id<? 不管是查10,还是99990,都只有一种执行计划,性能怎么样就只能靠人品了。
以前我也遇到过的这种情况,在oracle 10g, 它有自己的之下你给计划,现则一跳它认为最好,结果每次都给我选择最慢的。
|
|
返回顶楼 | |