当前位置:  开发笔记 > 后端 > 正文

SELECT*FROM表WHERE x IN(......几百个整数...)

如何解决《SELECT*FROM表WHERExIN(几百个整数)》经验,为你挑选了2个好方法。

表有大约800万行.X有一个非唯一索引.

显示索引,它表明在表中键名X上有一个非唯一索引,其中"seq_in_index"为1,排序规则A,基数7850780,sub_part为NULL,打包为NULL,index_type为BTREE.

但是,此查询可能需要5秒才能运行.int的列表来自另一个系统,我不允许将它们存储在一个表中,因为它们代表了社交网络上的友谊.

有没有比大规模IN声明更快的方法?



1> Michael Hare..:

您可以将ID列表转换为临时表(或表-var,如果MySql支持它们)并加入它.

该表只会与查询一样长,因此您实际上并未在表中存储任何内容.



2> tvanfosson..:

您可以尝试将它们存储在临时表中.这个表不会永久存储在数据库中,我认为最终的连接(假设您也将索引临时表)会更快,因为它能够并行处理索引而不必进行索引查找对于IN子句中的每个int.当然,如果MySQL知道它将使用索引,那么它可能会优化IN子句并执行相同的操作,因此它实际上可能无法获得任何东西.我会尝试一下,看看它是否更快.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有