gpt4 book ai didi

MySQL慢查询,圆内点连接表

转载 作者:行者123 更新时间:2023-11-28 23:57:28 24 4
gpt4 key购买 nike

我试图让这个查询正常工作,不幸的是它很慢。所以我猜可能有更好的查询来获得我正在寻找的结果。

Select samples.X, samples.Y, samples.id, samples.Provnr, samples.costumer_id, avg(lerhalter.lerhalt) from samples
left outer join lerhalter
on SQRT(POW(samples.X - lerhalter.x , 2) + POW(samples.Y - lerhalter.y, 2)) < 100
where samples.customer_id = 900417
group by samples.provnr

我有表样本,我想获取所有客户样本,然后加入“lerhalt”表。当我进行连接时,每个样本可能有不止一行,因此我想获得列 lerhalt 的平均值。

我想我得到了我想要的结果,但对于只有 100 个样本的客户来说,查询最多可能需要 10 秒。有客户有2000个 sample 。所以我必须获得更好的查询时间。

有什么建议吗?

最佳答案

略去 SQRT 函数可以加快速度。 SQRT() 在计算时间方面很昂贵,您只需将比较的右侧调整为 100x100 = 10.000:

Select samples.X, samples.Y, samples.id, samples.Provnr, samples.costumer_id, avg(lerhalter.lerhalt) from samples
left outer join lerhalter
on (POW(samples.X - lerhalter.x , 2) + POW(samples.Y - lerhalter.y, 2)) < 10000
where samples.customer_id = 900417
group by samples.provnr

此外,您确定需要 LEFT OUTER JOIN 吗?可以使用 INNER JOIN 代替吗?

下一个问题:X和Y是协调整数值吗?如果不是,是否可以将它们转换为整数?整数运算通常比浮点运算快得多。

最后,你显然做了一个欧氏距离测量。真的需要吗?另一个距离度量是否可以做得足够好?也许城市街区的距离足以满足您的需求?这将进一步加快速度。

关于MySQL慢查询,圆内点连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31228775/

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