nerezus
Вселенский отказник
Оптимизация join
ОС: винда. MySQL настроен под девелопера при установке. Комп средний(Athlon x2 3800+)
Структура:
items: id(праймари индекс), category(индекс), name
images: id(праймари индекс), item_id(индекс), url
Записей 40k и 80k соответственно.
Задача: получить список items в заданной категории с картинками.
При этом нужна всего 1 картинка. Если картинки нет - все равно отображать такой item.
[SQL]SELECT * FROM items
LEFT JOIN images ON images.item_id = items.id
WHERE category = 12
GROUP BY images.item_id
LIMIT 10
[/SQL]
Запрос выполняется 11(!!!) секунд. Повторно полсекунды(кеш, как понимаю).
Как можно оптимизировать?
Есть глупая идея - дергать айтемы, а вторым запросом картинки по WHERE id IN(?), но выглядит ужасно и не хотелось бы юзать.
Заранее стыдно за такой вопрос - будете в дату реги тыкать?) Но такая проблема впервые возникла )
ОС: винда. MySQL настроен под девелопера при установке. Комп средний(Athlon x2 3800+)
Структура:
items: id(праймари индекс), category(индекс), name
images: id(праймари индекс), item_id(индекс), url
Записей 40k и 80k соответственно.
Задача: получить список items в заданной категории с картинками.
При этом нужна всего 1 картинка. Если картинки нет - все равно отображать такой item.
[SQL]SELECT * FROM items
LEFT JOIN images ON images.item_id = items.id
WHERE category = 12
GROUP BY images.item_id
LIMIT 10
[/SQL]
Запрос выполняется 11(!!!) секунд. Повторно полсекунды(кеш, как понимаю).
Как можно оптимизировать?
Есть глупая идея - дергать айтемы, а вторым запросом картинки по WHERE id IN(?), но выглядит ужасно и не хотелось бы юзать.
Заранее стыдно за такой вопрос - будете в дату реги тыкать?) Но такая проблема впервые возникла )