如下SQL语句在MySQL中执行需要2秒左右的时间,如果使用UNION ALL进行不去重合并只需要0.4秒,UNION ALL配合DISTINCT来去重速度又变成2秒了,请问如何进行优化?
SELECT
a. KEY,
a. DATA,
a.date_added
FROM
(
(
SELECT
CONCAT('customer_', ca. KEY) AS `key`,
ca. DATA,
ca.date_added
FROM
`cf_customer_activity` ca
)
UNION
(
SELECT
CONCAT('affiliate_', aa. KEY) AS `key`,
aa. DATA,
aa.date_added
FROM
`cf_affiliate_activity` aa
)
) a
ORDER BY
a.date_added DESC
LIMIT 0,
5;
看你寫的語句key前綴不一樣永遠不會有重複啊,直接union all
當然先使用QEP
至於每個欄位的具體意義,自己查資料。
@prolifes 是對的。也許題主沒表達清楚。
我補充另外一個思路,因為你最後只需要5條數據,從ca中取5條,再從aa中取5條,總共10條排序,這個會很快。