我有它運行很慢(幾乎50000條記錄)以下查詢如何優化這個慢速查詢?
SELECT
news.id,
news.title,
DATE_FORMAT(news.date_online,'%d %m %Y')AS newsNL_Date
news_categories.parent_id
FROM
news,
news_categories
WHERE
DATE(news.date_online)=2013-02-25
AND news.category_id = news_categories.id
AND news.date_online < NOW()
AND news.activated ='t'
ORDER BY
news.date_online DESC
我有MySQL客戶端版本5.0.96
當我運行EXPLAIN EXTENDED調用這個查詢,這是結果:
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE news ref category_id,date_online,activated activated 1 const 43072 Using where; Using filesort 1 SIMPLE news_categories eq_ref PRIMARY,id PRIMARY 4 news_category_id 1
我有以下列的索引 news_id(主鍵) date_online 激活 美食gory_id
當我看看EXPLAIN EXTENDED結果時,我看到了USING_WHERE;使用FILESORT。我知道他們兩人都不好,但我不知道如何解決這個問題。
謝謝,我已經得到了一個date_online的索引 – user1169366 2013-03-13 12:08:48
date_online上的索引被忽略,因爲您不是直接使用該列,而是對該列的值執行函數並比較結果 – Kickstart 2013-03-13 13:13:53