mysql - 查询极慢

标签 mysql performance

我正在运行以下查询,但它非常慢。任何人都可以对我如何优化它以提高性能有任何建议。

主用户表只有 2700 行。

查询是:

SELECT
    (
        SELECT
            core_org_chart.translation
        FROM
            core_org_chart
        WHERE
            (
                core_org_chart.id_dir = t1.idOrg
            )
    ) AS region,
    (
        SELECT
            core_org_chart.translation
        FROM
            core_org_chart
        WHERE
            (
                core_org_chart.id_dir = t2.idOrg
            )
    ) AS level1,
    (
        SELECT
            core_org_chart.translation
        FROM
            core_org_chart
        WHERE
            (
                core_org_chart.id_dir = t3.idOrg
            )
    ) AS level2,
    (
        SELECT
            core_org_chart.translation
        FROM
            core_org_chart
        WHERE
            (
                core_org_chart.id_dir = t4.idOrg
            )
    ) AS level3,
    core_user.firstname AS firstname,
    core_user.lastname AS lastname,
    core_user.email AS email,
    core_user.register_date AS register_date,
    core_user.lastenter AS lastenter,
    (
        SELECT
            core_field_son.translation
        FROM
            (
                core_field_son
                JOIN core_field_userentry ON (
                    (
                        core_field_userentry.user_entry = core_field_son.idSon
                    )
                )
            )
        WHERE
            (
                (
                    core_field_userentry.id_user = core_user.idst
                )
                AND (
                    core_field_userentry.id_common = 4
                )
            )
    ) AS Gender,
    (
        SELECT
            core_field_son.translation
        FROM
            (
                core_field_son
                JOIN core_field_userentry ON (
                    (
                        core_field_userentry.user_entry = core_field_son.idSon
                    )
                )
            )
        WHERE
            (
                (
                    core_field_userentry.id_user = core_user.idst
                )
                AND (
                    core_field_userentry.id_common = 6
                )
            )
    ) AS Race,

IF (
    (core_user.valid = 1),
    'Active',
    'Suspended'
) AS UserStatus,
 (
    SELECT
        jet_designations.designation
    FROM
        jet_designations
    WHERE
        (
            jet_designations.id = core_user.designation
        )
) AS UserDesignation,
 (
    SELECT
        jet_designations.designation
    FROM
        jet_designations
    WHERE
        (
            jet_designations.id = core_user.reports_to
        )
) AS Manager
FROM
    (
        (
            (
                (
                    (
                        core_org_chart_tree t1
                        LEFT JOIN core_org_chart_tree t2 ON (
                            (
                                t2.idParent = t1.idOrg
                            )
                        )
                    )
                    LEFT JOIN core_org_chart_tree t3 ON (
                        (
                            t3.idParent = t2.idOrg
                        )
                    )
                )
                LEFT JOIN core_org_chart_tree t4 ON (
                    (
                        t4.idParent = t3.idOrg
                    )
                )
            )
            JOIN core_group_members ON (
                (
                    core_group_members.idst =
                    IF (
                        isnull(t2.idOrg),
                        t1.idst_ocd,

                    IF (
                        isnull(t3.idOrg),
                        t2.idst_ocd,

                    IF (
                        isnull(t4.idOrg),
                        t3.idst_ocd,
                        t4.idst_ocd
                    )
                    )
                    )
                )
            )
        )
        JOIN core_user ON (
            (
                core_user.idst = core_group_members.idstMember
            )
        )
    )
WHERE
    (t1.lev = 1)

最佳答案

您在一个查询中使用多个查询,加入它们将提高性能。

关于mysql - 查询极慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23098189/

相关文章:

java - 为什么 Java 在这种情况下比 C 更快(也更慢)?

java - Java中推荐使用ArrayList和HashMap?

asp.net-mvc - ASP.NET MVC应用程序性能分析

mysql - 这个MySQL索引会提高性能吗?

java - 是否建议在字段中缓存 Collections.unmodifiableList() 结果?

php - 一列上的多个计数值

ruby-on-rails - apache2 和 mysqldump 导致大量负载平均峰值

php - 如何将这个sql查询简化为一个

php - 插入到基于数组的表中

php - 将 mysql 数据库与 xml 文件同步