0
我读过如果在IN标准中传递的参数数量很大,创建一个临时表最好。这是用于选择查询。这是否适用于更新查询?我有一个更新查询,它使用3个表连接(内连接)并在IN标准中传递1000个参数,并且此查询在循环中运行200次或更多次。哪个是执行此查询的最佳方法?IN在MySQL中更新操作的标准性能
我读过如果在IN标准中传递的参数数量很大,创建一个临时表最好。这是用于选择查询。这是否适用于更新查询?我有一个更新查询,它使用3个表连接(内连接)并在IN标准中传递1000个参数,并且此查询在循环中运行200次或更多次。哪个是执行此查询的最佳方法?IN在MySQL中更新操作的标准性能
IN
操作通常很慢。将1000个参数传递给任何查询听起来都很糟糕。如果你能避免这种情况,那就去做吧。现在,我真的会喜欢临时表。你甚至可以玩桌子的索引。我的意思是,不要只是在其中添加值,而是使用可帮助您优化搜索的索引。
另一方面,添加索引比添加索引慢。去那里进行经验测试。现在,我认为是必须的,请记住,在使用另一个表时,不需要使用IN
子句,因为可以使用EXISTS
子句,这通常会带来更好的性能。我:
select * from yourTable yt
where exists (
select * from yourTempTable ytt
where yt.id = ytt.id
)
我不知道你的查询,也不知道数据,但那会给你一个关于如何去做的想法。请注意,内部select *
与select aSingleField
一样快,因为数据库引擎会优化它。
这些都是我的想法。但请记住,为了100%确定最适合您的问题,最好不要进行这两种测试并计时。希望得到这个帮助。
感谢您的帮助莫斯迪。我必须尝试这个。 – 2012-02-10 06:08:59
欢迎@Ebbu! – 2012-02-10 06:10:59