Как правильно делать PARTITION в Mysql?

Есть таблицы записей с 6 млн записями, выборки даже простые бывают медленно выполняются. У каждой записи есть колонка город (120 городов) стоит ли разбить по городам ? И вообще поможет ли для оптимизации партиционирование?
SELECT distinct(product.id), product.id,
               product.name,
               product.description,
               product.city_id,
               product.price,
               product.company_name,
               product.timestamp_update,
               product.company_id,
               city.name as city_name
FROM `product_to_tag` `v2t`
JOIN `product` ON product.id = v2t.product_id
JOIN `product_to_city` `vtc` ON product.id = vtc.product_id
JOIN `city` `c` ON c.id = vtc.city_id
LEFT JOIN `city` `city` ON city.id=product.city_id
LEFT JOIN `company` ON company.id=product.company_id
WHERE ((`product`.`publish` = 1)) AND (product.id !=  5016460) AND (c.id = 99 or c.parent_id = 99) AND ((`v2t`.`tag_id` IN (65, 181, 228, 1135)))
ORDER BY `product`.`timestamp_update` DESC LIMIT 30;

таблица product
KAgWWPOC4DaYxA.jpg
индексы
YmENN96F0Yxvk2.jpg
product_to_tag
279c75cd4a.jpg
product_to_city
J2b33DKuXbWlNA
company
krDxxj5hEqXwNr.jpg
city
f11a6da2b0.jpg

explain
8AnBBp7fj4kxEA.jpg
  • Вопрос задан
  • 1832 просмотра
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега MySQL
Web developer
6М - это мало. Надо не партиционировать таблицу, а правильно писать запрос и, возможно, построить индексы.
https://dev.mysql.com/doc/refman/5.7/en/explain.html
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы