SELECT * FROM table WHERE id in(1,2,3,4,5,6,7...1000,1001);到1000多的时候,速度有点慢了,怎么提高效率?
解决方案 »
- 批量update的问题
- 通过父节点ID查询所有子节点ID,报错:data too long for column
- MYSQL的查询为何比ACCESS慢这么多
- 我现在有2个数据表!结构不同!我想合并成一个!如何操作呢!?
- csv如何导入 mysql? ACMAIN_CHM 来帮帮忙。。
- pl/pgsql高手请进,急,先谢过了
- 请问,postgresql有没有像sqlserver那样的profiler事件探查
- myodbc插入较长string总是失败,如何解决?
- 紧急求救,asp连接mysql问题
- msyql 先分组,再求每组中count前面的数据
- mysql 查询很慢,怎么回事。
- CMS系统的文章(content)存储的问题(数据库OR文件系统,这是个问题)
[求证&散分]MySQL 中 where id in (1,2,3,4,...) 的效率问题讨论
里面主要是创建表再联表查询,以及大家都讨论使用in还不错
我想知道在in的数据量大的情况下,有没有其他方法
flush tables上面两条语句都试过,为什么还是会缓存?有其他语句?
select * from table where id in (1,2,3...100)
union all
select * from table where id in (101,102,...200)
union all
....===============================================================
其实感觉慢的原因主要还是要显示的数据多了。
那个清除缓存的命令,试过了,但是我查询第二次的时候时间还是明显是0.0几秒 说明缓存还存在哦。。 恩 这个我试试
explain
select ............
那么tid in(1,2,3,4....)和 tid=1 or tid=2 or tid=3...的查询效率是一样的?
| 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是加了索引
有什么好的解决办法吗,虚心听讲