【发布时间】:2015-02-21 04:33:57
【问题描述】:
我正在尝试在 MYSQL DB 中执行此查询。
SELECT FirstName,LastName
CONCAT(COALESCE(Address1, ''),
COALESCE(Address2, '')) AS Address2,
(SELECT GROUP_CONCAT(EmpDept ' ') FROM EMP_DEPT
USE INDEX (EMP_DEPT_IDX)
WHERE EMP_DEPT.EMP_ID = EMP.EMP_ID) AS DEPT,
COUNT(PIN) AS PIN,
MIN(SALARY) AS SALARY,
GROUP_CONCAT(DISTINCT PAY_CODE SEPARATOR ' ') AS PAYROLL_CODE
FROM EMP WHERE HOUSE='YELLOW' AND HOUSE_AREA='220'
AND (JOIN_YEAR = '2011' OR JOIN_YEAR = '2012')
AND EMP_BAND='G'
AND (FRESHER = 'N' OR FRESHER = 'FALSE')
AND PIN IS NOT NULL
AND SALARY > 0
GROUP BY FirstName,LastName Address3, Address2, DEPT
查询工作正常,我得到了所需的结果集。
唯一的问题是,使用 GROUP_CONCAT 编写的这两行代码对性能有很大影响,
(SELECT GROUP_CONCAT(EmpDept ' ') FROM EMP_DEPT
USE INDEX (EMP_DEPT_IDX)
WHERE EMP_DEPT.EMP_ID = EMP.EMP_ID) AS DEPT
GROUP_CONCAT(DISTINCT PAY_CODE SEPARATOR ' ') AS PAYROLL_CODE
我尝试添加 INDEX,但仍然没有运气。(只有这些子查询需要大约 30-40 秒才能执行)
我尝试实现 Joins,但由于我是 mysql 新手,所以没有运气..
谁能帮我加快查询的执行速度?
【问题讨论】:
标签: mysql performance join distinct group-concat