〇、问题
今天群里有人问
SELECT *
FROM table
WHERE id IN(11,2,3,44,...)
在in里面有大量数据4000+,有什么 好的处理方式吗?
我的优化方案的总体思路是把in转换成表连接
仅仅以MySQL和Java举例,其他数据库和开发语言也有类似的实现
1、目标
总体来说大概就是弄出来sql要这样
SELECT a.*
FROM table a
INNER JOIN (
  SELECT 11 id
  UNION ALL SELECT 2
  UNION ALL SELECT 3
  UNION ALL SELECT 44
  #其他的省略
) t ON a.id = t.id
2、代码
mybatis代码为
INNER JOIN (
  <foreach collection="list" item.........