У меня есть база данных с кучей записей, и когда я загружаю страницу с помощью следующего SQL, это очень медленно.
SELECT goal.title, max(updates.date_updated) as update_sort
FROM `goal`
LEFT OUTER JOIN `update` `updates` ON (`updates`.`goal_id`=`goal`.`goal_id`)
WHERE (goal.private=0)
GROUP BY updates.goal_id
ORDER BY update_sort desc
LIMIT 12
Когда я делаю объяснение, он говорит, что он не использует никаких ключей, и что он ищет каждую строку. Также говорит мне, что он использует «Using where; Using временный; Using filesort».
Любая помощь очень ценится
Спасибо
Его нужно сгруппировать по goal_id, поскольку MAX () при выборе возвращает только одну строку.
То, что я пытаюсь сделать, это вернуть строку MAX date_updated из таблицы updates
для каждой цели и затем отсортировать ее по этому столбцу.
Текущие индексы находятся на goal.private и update.goal_id
вывод EXPLAIN (не удается загрузить изображения, поэтому нужно поместить его здесь, извините, если не ясно:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE goal ref private private 1 const 27 Using temporary; Using filesort
1 SIMPLE updates ref goal_id goal_id 4 goal.goal_id 1