![]() |
1
12
您可以将ID列表转换为临时表(如果MySQL支持,则转换为表var)并与之连接。 该表的有效期仅与查询的有效期相同,因此实际上 存储 桌子上的任何东西。 |
![]() |
2
5
您可以尝试将它们存储在 temporary table .这个表不会永久地存储在数据库中,我认为结果连接(假设您也为临时表编制索引)会更快,因为它能够并行处理索引,而不必为in子句中的每个in t进行索引查找。当然,如果MySQL知道它将使用一个索引,那么它可能会优化in子句并做同样的事情,这样它就不会真正获得任何东西。不过,我还是会试试看速度是否更快。 |
![]() |
3
4
正如其他人所建议的,临时表是最合适的解决方案。 但是要注意,根据基数和临时表/in()条件中的行数,优化器可能仍然使用顺序扫描,因为顺序读取比索引中的许多随机查找快得多。 此时考虑重新设计关系可能是合适的。 |