首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化大型MySQL SELECT WHERE IN语句

优化大型MySQL SELECT WHERE IN语句
EN

Stack Overflow用户
提问于 2014-07-12 22:31:17
回答 1查看 1.1K关注 0票数 1

我需要在MySQL上执行一个大型SELECT WHERE IN查询,并且需要它快速运行。我有一个超过1亿行的表,主键在varchar 127上(它必须是这样的)。

我正在执行SELECT col1 FROM table WHERE col1 IN ( $in ) where $in有5000个值。实际上,我只需要找出5,000个值中的哪一个在主键col1的表中。

查询通常需要1到10秒,但通常约为7或8秒。

对于由varchar索引的大型表,有没有更优化、更快速的方法来使用大型IN子句执行SELECTS?

我在一个专用的服务器上使用InnoDB。谢谢你的建议。

EN

回答 1

Stack Overflow用户

发布于 2014-07-12 23:00:57

这对于评论来说有点长了。

我猜您已经在table(col1)上有了一个索引,否则查询时间可能会超过10秒。如果不是这样,则添加一列。更好的做法是,将该列作为主键。

我怀疑索引不适合存储在内存中。为此,您需要找到一个MySQL数据库管理员(如果您有这么大的表,您应该有这样的数据库管理员)或了解MySQL的内存选项。不适合内存的索引将表现出这种类型的行为。

如果这是真的,那么行为应该是相当线性的。因此,如果您有一个包含500个ids的列表,则应该需要大约一秒钟或更少一点的时间。如果你有50个ids,那么十分之一秒左右。

在这种情况下,对in列表进行排序可能会有所帮助。然而,这真的只是我的猜测。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24713924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档