繁体   English   中英

MySQL更新操作的IN Criteria性能

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM