我有以下選擇:MySQL的選擇緩慢的,因爲順序按
SELECT a.userid,
(SELECT name FROM photos WHERE userid=a.userid AND type='profile' LIMIT 1) AS photo,
(SELECT attractive FROM photos WHERE userid=a.userid AND type='profile' LIMIT 1) AS attractive,
IF(a.domain="domanin.com",1,2) AS preferredDomain,
IF(a.domain LIKE "%domain.com",1,2) AS preferredSubDomain
FROM users AS a
WHERE a.gender = 1
AND a.visible = 1
AND a.active = 1
AND a.completed = 1
AND a.approved = 1
HAVING photo IS NOT NULL
ORDER BY preferredDomain ASC,
attractive DESC,
a.lastlogin DESC,
preferredSubDomain ASC
LIMIT 100;
這需要5-6秒來運行。
如果我刪除Order By
需要0.23秒才能運行。
我假設這是因爲SELECT
必須先生成內部SELECTS才能進行排序?這是正確的嗎?用戶表有60,000個條目。
任何人都可以提供一些建議,如何更好地構造此查詢?
你有一個沒有'GROUP BY'的'HAVING'子句? – Stewart