JOIN查询与多个查询


179

JOIN查询比几个查询快吗?(您运行主查询,然后根据主查询的结果运行许多其他的SELECT)

我问是因为加入它们会使我的应用程序设计复杂化

如果速度更快,谁能大致估算出多少?如果是1.5倍,我不在乎,但是如果是10倍,我想我是。


我认为它们会更快。我知道一个INSERT比说10个单独的INSERT查询要快得多。
alex

1
多个查询是否位于存储过程中(它们是否源自应用程序)可能很重要(使用此信息编辑您的问题)。前者将比后者快得多。
colithium

Answers:


81

这太模糊了,无法为您提供与您的具体情况相关的答案。这取决于很多事情。Jeff Atwood(该网站的创始人)实际上写了这本书。但是,在大多数情况下,如果索引正确,并且正确执行了JOIN,通常一次旅行要比多次旅行更快。


2
如果在不同的键上连接3个或更多表,则数据库(即mysql)通常只能在每个表上使用一个索引,这意味着其中一个连接会很快(并使用索引),而其他连接则非常慢。对于多个查询,您可以优化索引以用于每个查询。
user151975

4
我认为这取决于您对“更快”的定义...例如,由于网络开销,并且由于您需要停止并准备并发送每个查询,因此3个PK内部联接的周转速度可能比4次往返更快。先前的查询完成。但是,如果要在负载下对服务器进行基准测试,则在大多数情况下,与PK查询相比,联接将花费更多的CPU时间,并且通常还会导致更多的网络开销。
mindplay.dk,2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.