我需要在MySQL上执行一个大的SELECT WHERE IN查询,我需要它快速运行。我有一个超过1亿行的表,主键在varchar 127上(并且必须这样)。优化大型MySQL SELECT WHERE IN语句
我正在执行SELECT col1 FROM table WHERE col1 IN($ in)其中$ in有5000个值。我基本上只需要找到主键col1中的表中的5,000个值中的哪一个。
查询通常需要1到10秒,但通常约为7或8秒。
是否有一个更优化,快速的方式来执行选择大型IN子句大型表索引varchar?
我正在使用InnoDB与PHP和PDO的专用服务器。感谢您的建议。
您是否曾尝试将'$ IN'变量中的值放入临时表中,其中主键是值?加入此表可能有助于提高性能。另外,还有多少行被返回?如果结果集相当大,那么可能会花费时间检索数据,而不是生成结果集。 –
这些值是否是任意的?也就是说,可能在WHERE开始处添加值,并且在IN子句中添加一些最大值 – Mihai
Gordon,我还没有尝试过,并且需要为我拼写的步骤,因为我相对较新大型的mysql表。 5000人中有1000人到5000人之间的人通常会返回,这是相当大的回报。 – Guy