天天看點

mysql 查詢sql性能優化_sql複雜查詢文法的mysql性能如何優化?

SELECT

(CASE

WHEN

(SELECT COUNT(*)

FROM EMPLOYEE

WHERE PERCOD = DB.PERID) > 1 THEN

(SELECT PERNAME

FROM EMPLOYEE

WHERE PERCOD = DB.PERID

AND ISDELETED = 0)

ELSE

(SELECT PERNAME

FROM EMPLOYEE

WHERE PERCOD = DB.PERID)

END) AS PERNAME

FROM BALANCE DB

LEFT JOIN BALANCE_BONUS DBB

ON DBB.ID = DB.BONUSID

WHERE DB.ISDELETED != 1

ORDER BY DB.ID;

----------------------------------------------------(CASE

WHEN

(SELECT COUNT(*)

FROM EMPLOYEE

WHERE PERCOD = DB.PERID) > 1 THEN

(SELECT PERNAME

FROM EMPLOYEE

WHERE PERCOD = DB.PERID

AND ISDELETED = 0)

ELSE

(SELECT PERNAME

FROM EMPLOYEE

WHERE PERCOD = DB.PERID)

END) AS PERNAME

這一段代碼會非常消耗查詢時間。 作用是 排除 EMPLOYEE 表中PERCOD重複的資料 , ISDELETED字段為已删除。 首先查詢級聯的人員是否有重複資料,如果隻有一條則顯示這唯一的一條; 如果有多條,則顯示ISDELETED字段為0的一條資料。 有沒有大牛給個優化解決方法!!!