![](/img/trans.png)
[英]Need MYSQL query with good performance to update and import data if that does NOT match criteria move to another table
[英]IN Criteria performance for update operation in MySQL
我已经读到,如果在IN标准中传递的参数数量很大,则最好创建一个临时表。 这用于选择查询。 这对更新查询也适用吗? 我有一个更新查询,该查询使用3个表联接(内部联接)并在IN条件中传递1000个参数,并且该查询在循环中运行200次或更多次。 哪个是执行此查询的最佳方法?
IN
操作通常很慢。 将1000个参数传递给任何查询听起来很糟糕。 如果可以避免,请执行此操作。 现在,我真的可以使用临时表了。 您甚至可以使用表的索引。 我的意思是,不要只是在其中添加值,而是要使用有助于您优化搜索的索引。
另一方面,带索引的添加要比不带索引的添加要慢。 去那里进行经验测试。 现在,我认为必须记住,使用其他表时不需要使用IN
子句,因为可以使用EXISTS
子句,通常可以提高性能。 IE浏览器:
select * from yourTable yt
where exists (
select * from yourTempTable ytt
where yt.id = ytt.id
)
我既不知道您的查询,也不知道数据,但这将使您了解如何执行此操作。 请注意,内部select *
与select aSingleField
一样快,因为数据库引擎对其进行了优化。
这些都是我的想法。 但是请记住,要100%确定最适合您的问题,没有什么比执行测试和安排测试时间更合适了:)希望有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.