我有它运行很慢(几乎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