2012-04-12 1 views
0

У меня есть одна большая категория с большим количеством записей. и мне нужно отсортировать его topic_lastpost_timeПроизводительность при создании разбивки на категории с потерями записей

, но mysql выглядит так медленно, когда я это делаю. Требуется 3 секунды, чтобы заполнить запрос i проиндексировано поле topic_lastpost_time

Вот пример. Как я могу ее поднять?

# Query_time: 3 Lock_time: 0 Rows_sent: 50 Rows_examined: 36075 
SELECT t.topic_id, 
     t.m_id, 
     t.m_username, 
     t.topic_title, 
     t.topic_lastpost_time 
FROM  p_topics t 
WHERE t.fc_id = '21' 
     AND t.topic_state = '1' 
ORDER BY t.topic_type DESC, 
     t.topic_lastpost_time DESC 
LIMIT 0,50; 
+0

ли '' fc_id' и topic_state' также индексируются? –

+0

Это может быть недостающий индекс в 'fc_id' и' topic_state'. Пожалуйста, опубликуйте результат 'SHOW CREATE TABLE p_topics', чтобы убедиться в этом. – Bjoern

+0

Да, fc_id, topic_state уже проиндексирован. – TomSawyer

ответ

0

Попробуйте изменить порядок заказа по п

SELECT t.topic_id, 
    t.m_id, 
    t.m_username, 
    t.topic_title, 
    t.topic_lastpost_time 
FROM  p_topics t 
WHERE t.fc_id = '21' 
    AND t.topic_state = '1' 
ORDER BY t.topic_lastpost_time DESC , 
t.topic_type DESC 
LIMIT 0,50; 
+0

Мне нужен приоритет для topic_type, потому что мне нужна самая важная тема на верхних позициях. – TomSawyer