qq_41265012
2018-08-16 03:36
采纳率: 95.5%
浏览 5.0k

mysql 查询 in包含的数组太多怎么提升效率?

SELECT * FROM table WHERE classid IN (199,200,201...........有600多个)

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • 我要看看123 2018-08-16 09:18
    已采纳

    创建一个临时表,表内的数据为in里面的数据,并将该列设置为PK,
    然后用左连接就OK了~~
    比如

    CREATE TABLE name1 (col1 int not null primary key)
    然后把那些in的数据放这里面去
    然后select tb1.* from table tb1 left join name1 tb2 on tb1.classid = tb2.col1

    打赏 评论
  • _zming 2018-08-16 03:40

    数据库in的参数是有限制的吧,最好看下官方文档对in的限制个数,如果in的参数固定,好将参数放到表中,通过关联查询去搞

    打赏 评论
  • 黑羽真兔 2018-08-16 03:47

    这里有个参考的地址,你可以看看
    https://blog.csdn.net/pengyufight/article/details/77523404

    打赏 评论
  • 人心鬼蜮 2018-08-16 03:52

    先子查询再连接查询,加上索引肯定会好很多。

    打赏 评论
  • FFFSSSFFF6 2018-08-16 06:08

    如果传进来的是一个参数列表的话 ,那么可以通过遍历的方式,循环来查。

    打赏 评论
  • 散了红尘 2018-08-16 06:28

    同意加参数进行限制查询,一次查询太多,页面加载会很慢

    打赏 评论
  • 骑白马的唐生 2018-08-16 07:14

    SELECT * FROM table WHERE classid between 199 and 600 是连续的就用这个

    打赏 评论
  • z793397795 2018-08-16 07:18

    in太多内容的话,,建议创建临时表,,然后关联查询,查询完毕后把临时表删掉

    打赏 评论
  • qq_39173954 2018-08-16 07:48

    使用exists比较好

    打赏 评论

相关推荐 更多相似问题