〇、问题
今天群里有人问
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.........
in多值优化
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
MySQL 8.0 全文检索实战
MySQL在数据量很大时候,进行like %%查询会比较慢,所以可以使用MySQL全文检索。
MySQL 分词器 全文检索 Ngram -
mysql 多值
多表设计之外键约束 约束 约束的作用 约束是用来保证数据的完整性。 单表约束 主键约束 唯一约束 非空约束 多表约束
mysql 多值 多表 表关系 事务 一对多 多对多 -
hanlp WordVectorModel找不到路径
Word Vectors将单词编码成向量,将其表示成在词空间中的某一点。每一维都可看作是某些语义信息的编码。one-hot vector: 最简单的词向量,将每个单词表示成一个 |V|*1维的向量。|V|是词表大小,其在词表中的索引位置值为1,其余为0。 但由于词表中单词巨多,所以one-hot vector维度过高;此外,任意两个vector点乘值为零,所以词向量之间彼此独立,不能
word2vec CBOW skip-gram negative sampling hierarchical softmax