论坛首页 综合技术论坛

不要迷信所谓的“SQL优化原则”

浏览 16090 次
精华帖 (0) :: 良好帖 (11) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-05-13  
我就是来顶你一下哈
0 请登录后投票
   发表时间:2011-02-10  
冲着标题来的。。。看到内容闪了
0 请登录后投票
   发表时间:2011-02-14   最后修改:2011-02-14
突然想到一些事情: 总是有人试图证明爱因斯坦是错误的。
0 请登录后投票
   发表时间: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,都只有一种执行计划,性能怎么样就只能靠人品了。
0 请登录后投票
   发表时间: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, 它有自己的之下你给计划,现则一跳它认为最好,结果每次都给我选择最慢的。

 

0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics