第二条写错了,where id = '1000' 应该为where id = 1000,后面的类似!

解决方案 »

  1.   

    晕了,先不讨论效率问题,首先第二种写法就不简洁。
    至少可以写成:
    select id, name, sex 
    from student 
    where id =1000 or id =1001 or id = 1002;吧
      

  2.   

    select id, name, sex 
    from student 
    where id between 1000 and 1002
      

  3.   

    首先我这样写当然有我的目的,当然知道这样不简洁,我这样写只是为了在程序中方便实现!因为这样的语句是通过一个for循环生成的,事先我并不知道我要查询的表,以及id的值!也就是说,表明和id值不能写死了!因为他们得知需要通过查询才能得知。
    我只想知道第二种方法跟第一种方法比较,他们的性能谁好!
      

  4.   

    当然是第一种方法好了,第一种方法只要对表扫描一次,而第二种,有多少个union就要扫描多少次!
      

  5.   

    如果不知道id的范围的话,还是用
    select id, name, sex 
    from student 
    where id =1000 or id =1001 or id = 1002...
    通过拼接where子句来实现。
    因为用in可能会忽略索引。
    另外union肯定比这两种慢。
      

  6.   

    采用第二种写法。不过既然id不重复,就把union改为union all,效率会更高!你不妨试一下!
      

  7.   

    darkhorsedba(老牛)  union all 是干什么的?怎么用?
      

  8.   

    to  imjack(#__JACK__) :union all 返回两个集合的并集,包括重复行,union 返回两个集合的并集,删除重复行
      

  9.   

    to  imjack(#__JACK__) : 第二种快哦!