Таблица 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 раз в сутки, когда нет активности на сайте.