在书中作者提出要避免对列运算,好处是可以避免索引无法使用,提高语句效率。
看完后,我明白这么改是要利用索引从而减少逻辑读。但我觉得他举得例子,是用日期列作索引,
有点是为讲解这个知识点而构造的演示环境,我对这个知识点在实际中的应用还没碰到过,所以现在
感觉理解不深刻,所以想请各位讲解下对这的理解。
还有他的改写我也不太明白,log_time 是带着小时和分秒的,而且log_time是唯一的值,现在直接拿lod_time和to_date('2010-08-05','yyyy-mm-dd')比,这样写可以吗?
为什么不能直接写成log_time=to_date('2010-08-05','yyyy-mm-dd'),现在在公司不能实验,所以如果上面我说错了,请见谅。
以下我贴上书中内容。
如下两条等价sql,前者对列进行了trunc,而后者没有。
select * from ljb_test where trunc(log_time) = to_date('2010-08-05','yyyy-mm-dd');
select * from ljb_test where log_time>=to_date('2010-08-05','yyyy-mm-dd')
and log_time111.JPG (121.9 KB, 下载次数: 1)
下载附件
1
2012-11-20 10:54 上传
222.JPG (92.56 KB, 下载次数: 3)
下载附件
2
2012-11-20 10:54 上传
|