例如:select * from sichuan where id=12 or id=14 or id=100 or id=60 or id =100 or id=20………………………………因为id可能很多很多,N千个也可能,这样的查询是否会有效率影响?是否有更好的sql语句?

解决方案 »

  1.   

    1、肯定会影响效率;
    2、用ID IN()形式;
    3、如果太多,存入表中,再连接。
      

  2.   

    是有影响。1、给ID建个索引,MYSQL会有自己的优化方式。
    2、把所要匹配的ID存放表,比如B。
    select a.* from sichuan as a, B where a.id = b.id;
      

  3.   


    那不是要将id insert table这不是一个数据冗余和添加数据库操作吗?
      

  4.   

    如果那部分id是上面程序动态算出来的,用 ID in (....) 的方式。
    如果是联查出来的,并且可以建立索引的话,就用 inner join 联查的方式。
    综合考虑,还是推荐采用 ID in (....) 的方式。
      

  5.   

    如果那部分id是上面程序动态算出来的,用 创建临时表,就ID 一个字段让后用inner join联查。 
    如果是联查出来的,并且可以建立索引的话,就用 inner join 联查的方式。 
    一般不推荐采用 ID in (....) 的方式,用in有效率的问题。