SELECT * FROM table WHERE id in(1,2,3,4,5,6,7...1000,1001);到1000多的时候,速度有点慢了,怎么提高效率?

解决方案 »

  1.   

    select * from table where id between 1 and 1001
      

  2.   

    我想用临时表来创建测试下速度,不过$tablesql1 = "DROP TABLE IF EXISTS tmp;CREATE TABLE tmp(id int(6) NOT NULL,KEY(id));";创建不成功?为什么?ID是不连续的
      

  3.   

    参考下贴http://topic.csdn.net/u/20090626/16/65f043cf-b9d9-4707-b660-9857461177f4.html
     [求证&散分]MySQL   中   where   id   in   (1,2,3,4,...)   的效率问题讨论 
      

  4.   

    恩,谢谢,拜读了
    里面主要是创建表再联表查询,以及大家都讨论使用in还不错
    我想知道在in的数据量大的情况下,有没有其他方法
      

  5.   

    reset query cache
    flush tables上面两条语句都试过,为什么还是会缓存?有其他语句?
      

  6.   

    in的范围太大,可以考虑用exists
      

  7.   

    reset query cache这个就是清缓存的。in是一个多等条件。可以走索引的。效率不会差。你的id有索引么?
      

  8.   

    临时表。有个猜测,仅仅是猜测而已。
    select * from table where id in (1,2,3...100)
    union all
    select * from table where id in (101,102,...200)
    union all
    ....===============================================================
    其实感觉慢的原因主要还是要显示的数据多了。
      

  9.   

    in会使用索引是把,后来我修改成or id=1 or id=2的形式,因为网上说这种会利用到索引的结构
    那个清除缓存的命令,试过了,但是我查询第二次的时候时间还是明显是0.0几秒 说明缓存还存在哦。。 恩 这个我试试
      

  10.   

    最简单的
    explain
    select ............
      

  11.   

    恩,刚EXPLAIN一下,它们的结果是一样的
    那么tid in(1,2,3,4....)和 tid=1 or tid=2 or tid=3...的查询效率是一样的?
      

  12.   

    +----+-------------+--------------------+-------+---------------+---------+---------+------+------+-----------------------------+
    | id | select_type | table              | type  | possible_keys | key     | key_len | ref  | rows | Extra                       |
    +----+-------------+--------------------+-------+---------------+---------+---------+------+------+-----------------------------+
    |  1 | SIMPLE      | threads | range | PRIMARY       | PRIMARY | 3    | NULL | 1363 | Using where; Using filesort |
    +----+-------------+--------------------+-------+---------------+---------+---------+------+------+-----------------------------+in与or的情况是一样,都有用到索引吗还是都没有用到索引?PS:tid是加了索引
      

  13.   

    其中使用 in 和 or的情况在 Extra里都有Using filesort  说明应该要进行优化
    有什么好的解决办法吗,虚心听讲