1:
name varchar      查询条件  name in('char1','char2','char3'..[大概情况2-6个char]) 这种情况  是用  name  in  查询快 还是用  name='char1' or name='char2'...快2id pk          查询条件  id in(int1,int2,int3...)int有[1-10个]  这种情况  是用  id  in  查询快 还是用  id=int1 or id=int2...快  ?int有[10+个]  这种情况  是用  id  in  查询快 还是用  id=int1 or id=int2...快   ?

解决方案 »

  1.   

    怎么查看 mysql 的执行计划
      

  2.   

    1、用数字型》字符型;
    2、如在NAME上建立索引,

    name='char1'
    UNION
    name='char2'
    速度最快。
      

  3.   


    意思是不是用 
    1. select * from table where  name='char1' union name='char2' union name='char3'....
    2. select * from table where  id=int1 union id=int2 union id=int3....
    这样的查询最快?
      

  4.   

    select strId from guangdong_fenci where keyname='东成' union keyname='渔村' union keyname='榕城' union keyname='店'这样运行不起啊?!!!
      

  5.   

    select * from guangdong_fenci where  keyname='成都' union  select * from guangdong_fenci where keyname='商场'这样查询啊?
    如果查询条件一多,sql语句就太长了吧?效率高?
      

  6.   

    or的效率高于in ???  有什么证明呢?
    我个人觉得union效率高, 只是语句长点
      

  7.   

    当字段上建有index 时, 使用or 就会全表查询;
    如果用union,则可以使用index.具体的情况使用EXPLAIN 查看.
      

  8.   

    为什么我使用explian 测试时间要比 or多很多啊啊!
      

  9.   

    如果在查询字段上建立索引的话,UNION应该速度快一些。
      

  10.   


    该字段不涉及到查询,id(int pk)  ---uid就是直接检索。。
    我用程序测试了一下,感觉  in最快。。union最慢!
      

  11.   

    呵呵,根据你的具体情况来决定,一般来讲,有恰当的索引话,UNION是可以用到索引的,
    IN、OR速度是比较慢的。
      

  12.   

    union查询类似这样!
    select name from guangdong where id=2432 
    union
     select name from guangdong where id=4863 
    union 
    select name from guangdong where id=7294
     union 
    select name from guangdong where id=9725 .......................
    我是这样拼接的!
      

  13.   

    表guangdong在ID上建立索引?是INTEGER型?
      

  14.   

    测试一下:
    83760条记录,在BH上索引:
    用OR 查询:
    SELECT * FROM TT WHERE BH=‘’ OR BH=‘’大约4MS

    UNION
    select  * from jzg1 where bh='101068' 
    union
    select  * from jzg1 where bh='100800'
    0MS结果即出来
      

  15.   

    是的。。这是其中的一个表还有一个表table2,name字段是varchar的,我需要这样的查询 select * from table2 where name='char1' ........这样的用union会快一点吗?
      

  16.   

    我上述的测试就是在varchar型字段上建立的索引,你可以测试一下。
      

  17.   


    直接在MySQL执行完后,直接会告诉你用了多少时间啊。 不过第二条执行的有时会沾一点光。
      

  18.   


    不会吧?
    dos下面最多就精确到   0.01sec!!