時,Mysql查詢運行非常緩慢按以下查詢需要30秒才能完成訂購。沒有它的順序完成在0.0035秒。我已經有一個字段「名稱」的索引。字段「id」是主鍵。我在這張桌上有40萬張唱片。請幫助,使用order by時查詢出了什麼問題。當按順序使用
SELECT *
FROM users
WHERE name IS NOT NULL
AND name != ''
AND (status IS NULL OR status = '0')
order by id desc
limit 50
更新:(末尾的解決方案) 大家好,感謝您的幫助。下面是你問的一些更新:
下面是解釋的輸出。
ID SELECT_TYPE表型possible_keys鍵key_len REF行額外
1 SIMPLE用戶範圍名稱名稱258 NULL 226009使用其中;使用filesort
是的,這個表中有大約20個字段。
下面是我的指標:
鍵名類型基數字段
PRIMARY PRIMARY 418099 ID 名INDEX 411049名
解決方案: 原來同場空值是原因。將where條件中的這兩個字段設置爲NOT NULL時,它只需要.000x秒。但奇怪的是,如果我創建(status,name,id DESC)或(status,name,id)索引,它會增加到29秒。
起碼,你應該包括的「解釋」的輸出您的查詢。 – 2011-12-27 18:22:29
當您明確指出要查詢的列時,是否有任何更改? – Origin 2011-12-27 18:23:22
你有一個巨大的結果集,是你的'id'索引? – 2011-12-27 18:23:34