首页 > 数据库 > mysql教程 > 为什么使用 ORDER BY 时我的 SQL 查询速度很慢,如何修复它?

为什么使用 ORDER BY 时我的 SQL 查询速度很慢,如何修复它?

Barbara Streisand
发布: 2024-12-04 04:20:11
原创
489 人浏览过

Why is my SQL query slow with ORDER BY, and how can I fix it?

在复杂查询中使用 ORDER BY 时性能缓慢

在具有多个联接和子查询的复杂查询中,添加 ORDER BY 子句可以导致执行时间明显变慢。已在包含四个表且仅返回 13 行的查询中报告了此问题。没有 ORDER BY 子句时查询运行很快,但添加 ORDER BY 子句后变得缓慢。

解决方案

要解决此性能问题,建议将查询包装在子查询并将 ORDER BY 子句应用于外部查询。下面是修改后的查询:

SELECT *
FROM (
    SELECT
    Course.CourseID,
    Course.Description,
    UserCourse.UserID,
    UserCourse.TimeAllowed,
    UserCourse.CreatedOn,
    UserCourse.PassedOn,
    UserCourse.IssuedOn,
    C.LessonCnt
    FROM
    UserCourse
    INNER JOIN
    Course
    USING(CourseID)
    INNER JOIN
    (
        SELECT CourseID, COUNT(*) AS LessonCnt FROM CourseSection GROUP BY CourseID
    ) C
    USING(CourseID)
    WHERE 
    UserCourse.UserID = 8810
)
ORDER BY CourseID;
登录后复制

说明

此解决方案有效的原因是它允许优化器独立于 ORDER BY 操作来评估子查询。这会产生更高效的执行计划,并且不会受到缓慢的 ORDER BY 操作的影响。

以上是为什么使用 ORDER BY 时我的 SQL 查询速度很慢,如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板