gpt4 book ai didi

php - 比 join 更好的解决方案

转载 作者:行者123 更新时间:2023-11-29 22:59:04 26 4
gpt4 key购买 nike

我有一个 mySQL 查询,它连接了 11 个表,每个表中大约有 50000 行,所有这些表都通过所有表中通用的序列号链接
虽然我只想要每个序列号一行,但 mySQL 需要很长时间才能运行查询,因为它必须连接如此多的表和如此多的行
我相信它必须创造大约 50000^11(11 的幂)

示例:(示例查询在语法上可能不正确,但我希望您明白)

select distinct serial, one.data1,two.data2,three.data3 from list 
left join (select * from table1) as one on list.serial=one.serial
left join (select * from table2) as two on list.serial=two.serial
left join (select * from table3) as three on list.serial=three.serial

连接更好还是子查询更好?
有没有更好的方法来构建花费更少时间的 sql 查询?
如果是,怎么办?

最佳答案

一种解决方案是创建并维护一个单独的索引表,其中包含您需要的数据点(例如序列、one.data1、two.data2、三.data3)。重新索引(查询和插入记录)此表会产生开销,但所有后续查询可以节省大量开销。

我发现另一个有用的解决方案是执行编程连接。当具有简单标准的多表连接需要太多内存时,可能会导致性能大幅下降。您应该尝试使用您正在使用的任何 native 编程语言(例如 PHP)对通过简单查询构建的数据集进行手动基准测试。有时您可能会使用此技术获得优势

关于php - 比 join 更好的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28586039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com