备受SQL青睐的“1”
写在前面:所用sql语句皆是在oracle 11g r1 数据库中实验。
在sql书写中,经常会用到数字1,例如 count(1),select 1, where 1=1等等,这样做有何好处呢?下面我们就开始分析一下下······
【count(1)】
count(*) 和 count(1)常被大家做比较
通过网络传言,初入领域的我也一直以为COUNT(1)比COUNT(*)的速度快。
但是通过测试,发现二者执行计划相同,并且TOM KYTE也曾回答过这个问题,说二者相同,故大家切不可不经实验,轻信别人的“经验之谈”,实践出真知,并且技术是在不断发展的,昨天的定律,今天可能就不再适用了,最可靠的方法就是自己亲自去验证。
一篇解释的很好的文章 http://www.cnblogs.com/Richardzhu/p/3419690.html
【select 1】
在exists 、 not exists 之后的子句中经常出现 select 1 from ······ 类似的语句
网上说,select 1 效率高于 select * ,因为select 1 不用查字典。
后来我自己查询了一下,发现两个语句的执行计划仍然是相同的,效率也相同,因为在exists里面并不会去实际读取字段里面的内容。
【where 1=1】
查询条件里 1=1 是一句废话,根本没有什么实际意义,但是为何有时候要写上这个条件呢?其目的主要是方便规范语句,在sql注入时非常有用。