select name ,address from student  和 select name,address from where name='%%' and address='%%' 
在什么情况下有区别?有什么区别?

解决方案 »

  1.   

    区别是明摆着的啊,一个查询有条件,一个没有
    name 和 address有索引下的情况下,速度一般来说会优于全表扫描,但是也未必一定走索引
      

  2.   

    where后面语句可能会用到索引
      

  3.   

    如果name,address 上面都有索引的话,select name,address from where name='%%' and address='%%'  将会走索引而不是全表扫描,速度会快很多
      

  4.   

    区别就是第一个会有结果集,有数据!
    第二个没有结果集,因为你有条件,且条件是where name='%%' and address='%%'
    而不是用like匹配!
      

  5.   

    楼主这两个SQL用sqlserver,oracle10G查询出来两个查询结果集不一样,其他产品还没试,但如果说区别的话,猜测楼主是为了想明白为什么这样子写吧?select name ,address from student 这个SQL毫无疑问是需要全表扫描的,select name,address from where name='%%' and address='%%'这个SQL因为有where语句,会先根据条件去找,如果name,address列有索引的话,这样子有条件的选择会避免全表扫描,会大大提高SQL执行效率。
      

  6.   

    如果是like的笔误的话.两者的区别在于对null的处理上.
    第一句可以选出两个字段其中之一为null或都为null的数据,第二句只会选出两字段都不为null的数据.
    原因如下.
    SQL> select 1 from dual where null like '%%';
     
             1
    ----------
     
    SQL> 
      

  7.   

    通配符 
    _(下划线) 表示一个任意字符
    %(百分号) 表示0个或多个任意字符要和like连用匹配再者两个%连着写有意义么?