Как расставить индексы в MySQL с партицией?

Таблица 1 (таблица сообщений, привязка по id_parent к таблице переписок между А и Б):
`id` AUTO_INCREMENT
`id_parent` (привязка к другой таблице)
`text`

Используются запросы:
DELETE FROM `table1` WHERE `id_parent` = 1 AND `id` = 1
SELECT ... WHERE `id_parent` = 1 ORDER BY `id` DESC

Хочу создать партиции по полю `id_parent`.
Если без партиций, то я бы создал следующие индексы:
1) PK `id` (для первого)
2) `id_parent` + `id` (для второго запроса)

Для партиций надо индекс объединить AUTO_INCREMENT вместе с колонкой для разбития, итого PK: `id`+`id_parent`. Создать `id_parent` + `id` не получается из-за ошибки "Incorrect table definition; there can be only one auto column and it must be defined as a key".

Вопрос: Как правильно создать индексы и партиции в данной задаче?

Знакомый советует создать лишь один PK `id` + `id_parent`, а запросы переписать так:
SELECT ... WHERE `id` > 0 AND `id_parent` = 1 ORDER BY `id` DESC . Мне кажется это немного странным костылём и проще было бы создать 2 составных индекса: PK `id` + `id_parent` и обычный `id_parent` + `id`.

Помогите разобраться как грамотно это делается...
П.С. Объемы операций в сутки: 400-450 тысяч INSERT, 400-450 тысяч DELETE, и несколько десятков миллионов SELECT. Конечно же я удаляю 1 раз в сутки, когда нет активности на сайте.
  • Вопрос задан
  • 712 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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