gpt4 book ai didi

MySQL 慢查询 ~ 10 秒

转载 作者:行者123 更新时间:2023-11-29 04:37:57 25 4
gpt4 key购买 nike

我有这个查询,它基本上通过一堆表来获得一些格式化的结果,但我似乎找不到瓶颈。最简单的瓶颈是 ORDER BY RAND() 但性能仍然很差。

在没有 ORDER BY RAND() 的情况下,查询需要 10 秒到 20 秒;

SELECT 
c.prix AS prix,
ST_X(a.point) AS X,
ST_Y(a.point) AS Y,
s.sizeFormat AS size,
es.name AS estateSize,
c.title AS title,
DATE_FORMAT(c.datePub, '%m-%d-%y') AS datePub,
dbr.name AS dateBuiltRange,
m.myId AS meuble,
c.rawData_id AS rawData_id,
GROUP_CONCAT(img.captionWebPath) AS paths
FROM
immobilier_ad_blank AS c
LEFT JOIN PropertyFeature AS pf ON (c.propertyFeature_id = pf.id)
LEFT JOIN Adresse AS a ON (c.adresse_id = a.id)
LEFT JOIN Size AS s ON (pf.size_id = s.id)
LEFT JOIN EstateSize AS es ON (pf.estateSize_id = es.id)
LEFT JOIN Meuble AS m ON (pf.meuble_id = m.id)
LEFT JOIN DateBuiltRange AS dbr ON (pf.dateBuiltRange_id = dbr.id)
LEFT JOIN ImageAd AS img ON (img.commonAd_id = c.rawData_id)
WHERE
c.prix != 0
AND pf.subCatMyId = 1
AND (
(
c.datePub > STR_TO_DATE('01-04-2016', '%d-%m-%Y')
AND c.datePub < STR_TO_DATE('30-04-2016', '%d-%m-%Y')
)
OR date_format(c.datePub, '%d-%m-%Y') = '30-04-2016'
)
AND a.validPoint = 1
GROUP BY
c.id
#ORDER BY
# RAND()
LIMIT
5000

这是解释查询:

enter image description here

视觉部分: enter image description here

这是 mysqltuner 的截图

enter image description here

编辑 1

我有很多索引,它们是:

enter image description here enter image description here

编辑 2:

所以你们做到了。缩短到 .5 秒到 2.5 秒。

我基本上听从了您的所有建议并更改了一些 my.cnf + 在我的表上优化运行。

最佳答案

您正在以一种非常次优的方式搜索日期。试试这个。

 ...  c.datePub >= STR_TO_DATE('01-04-2016', '%d-%m-%Y') 
AND c.datePub < STR_TO_DATE('30-04-2016', '%d-%m-%Y') + INTERVAL 1 DAY

这允许对 datePub 列上的索引进行范围扫描。您应该在 (datePub, prix, addresse_id, rawData_id) 上为该表创建一个复合索引,看看它是否有帮助。

也尝试在 a (valid_point) 上建立索引。请注意,您在该表中使用几何数据类型可能没有任何帮助。

关于MySQL 慢查询 ~ 10 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36805578/

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