gpt4 book ai didi

mysql - SQL - 查询优化以处理大数据

转载 作者:行者123 更新时间:2023-11-29 20:49:00 25 4
gpt4 key购买 nike

我有表 33_PROBLEM,其中包含 ROOT 和 ROOT_CUBED 列。十我有一个简单的过程,插入数据,让我们从-10000到10000的ROOT开始,这意味着ROOT_CUBED从-10000^3到10000^3。

问题很简单:如何获取 ROOT_CUBED 值的所有三元组组合,并将其添加到给定的数字中?

换种说法:我想找到 A、B、C 哪个为真,即 A^3 + B^3 + C^3 = number_given

<小时/>

以下是搜索号码 33 的一些示例:

SELECT T1.r1, 
T2.r2,
T3.r3
FROM (SELECT root_3 AS R1
FROM `33_problem`) AS T1,
(SELECT root_3 AS R2
FROM `33_problem`) AS T2,
(SELECT root_3 AS R3
FROM `33_problem`) AS T3
WHERE T1.r1 + T2.r2 + T3.r3 = 33

它工作得很好......在少量的行上。此查询生成 (COUNT *)^3 行,对于 20000 个输入行,这等于 8e+12 行! ... RIP 服务器...

<小时/>

解决这个问题的正确方法是什么?

<小时/>

(我从 https://www.youtube.com/watch?v=wymmCdLdPvM 得到了这个想法,我希望,当有人给出一些答案时,我会更好地理解 SQL 是如何工作的,以及查询和数据库应该如何设计,即使对于大数据也能很好地工作)

最佳答案

1) 您可以尝试仅选择连续的三元组,例如 R1 <= R2 <= R3,

2) 如果有重复项,请选择不同的

SELECT T1.R1
,T2.R2
,T3.R3
FROM (
SELECT DISTINCT ROOT_3 AS R1
FROM `33_PROBLEM`
) AS T1
,(
SELECT DISTINCT ROOT_3 AS R2
FROM `33_PROBLEM`
WHERE R2>=R1
) AS T2
,(
SELECT DISTINCT ROOT_3 AS R3
FROM `33_PROBLEM`
WHERE R3>=R2
) AS T3
WHERE T1.R1 + T2.R2 + T3.R3 = 33

关于mysql - SQL - 查询优化以处理大数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38207078/

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