gpt4 book ai didi

mysql - 通过多个连接加速 SQL 查询

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

我有一个查询需要大约 4 分钟才能运行。有什么办法可以优化这个查询吗?我正在使用 MySQL 5.6.20 。我尝试将每个内部联接的 AND 子句添加为最后一个 WHERE 子句的子查询,但没有效果。

 SELECT h.userId 
, h.pageId
, h.id
, h.content highlightContent
, h.createdAt highlightCreatedAt
, h.tagName
, h.inputId
, h.children
, p.topic_title pageTitle
, p.topic_uuid guid
, p.topic_position pagePosition
, p.lcms_module_uuid pageModuleId
, mp.module_position modulePosition
, mp.lcms_module_uuid moduleID
, mp.section_uuid moduleSectionUUID
, mp.module_title moduleTitle
, sp.section_uuid sectionGuid
, sp.section_position sectionParentId
, sp.album_uuid sectionAlbumID
, sp.section_title albumTitle
, ap.album_title albumPath
, ap.album_uuid
, ap.id albumId
, ps.id publishId
FROM highlights h
JOIN LCMS3.topic_publishes p
ON p.topic_uuid = h.pageId
AND p.publish_schema_id = 5784
JOIN LCMS3.lcms_module_publishes mp
ON p.lcms_module_uuid = mp.lcms_module_uuid
AND mp.publish_schema_id = 5784
JOIN LCMS3.section_publishes sp
ON sp.section_uuid = mp.section_uuid
AND sp.publish_schema_id = 5784
JOIN LCMS3.album_publishes ap
ON ap.album_uuid = sp.album_uuid
AND ap.publish_schema_id = 5784
JOIN LCMS3.publish_schemas ps
ON ps.topic_publish_uuid = p.topic_publish_uuid
WHERE h.userId = '364663286b6de43c21d7dafe29370441'
AND p.album_uuid = '49152e6b-ca80-4889-a65e-4e6fd1dcc367'
GROUP
BY h.id
ORDER
BY albumId
, sectionParentId
, modulePosition
, pagePosition

我已经使用explain select来查找索引,但我不确定此时要修改什么:

http://i61.tinypic.com/33tksw2.png

最佳答案

首先也是最重要的事情是确保查询中使用的表有正确的索引。

其次按照从小表到大表的连接顺序,从而缩小结果数据范围。

我注意到的另一件事是,这里给出的查询无法正常运行,因为 group by 只有一列,而 select 子句有各种列,而且我没有看到这里使用 group by,因为没有聚合。如果要聚合,请将所有非聚合列添加到分组依据并至少使用一个聚合函数。

关于mysql - 通过多个连接加速 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26983418/

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