Использование GUID в качестве PK в большой многораздельной таблице MySQL

У нас есть огромная таблица InnoDB с сотнями миллионов строк и всего 3 столбцами: GUID, enum, smallint. Все поиски выполняются по GUID.

Мы рассматриваем возможность сделать GUID PK и разбить его ПО КЛЮЧУ.

Мы слышали, что использование GUID в качестве PK плохо из-за его случайного распределения и того факта, что PK создает кластеризованный индекс. Таким образом, хранение строк в произвольном порядке GUID увеличивает фрагментацию и разбиение страниц.

Альтернативой использованию GUID в качестве PK является создание суррогатного ключа автоинкремента и его использование в качестве PK. Однако, если мы хотим разделить таблицу по GUID, этот GUID также должен быть частью PK. Кроме того, поскольку все запросы выполняются по GUID, нам нужен дополнительный индекс GUID. Этот индекс по существу отображает GUID-> PK, а если мы используем GUID как PK - сама таблица отображает GUID-> enum + small int?

Итак, мой вопрос в том, получим ли мы что-нибудь, добавив auto-inc PK и имея дополнительный GUID index?

Спасибо, Филопатор.

6
задан Amro 3 July 2012 в 18:43
поделиться