Surzhikov
@Surzhikov
Разработчик

Какой индекс будет оптимальнее?

Подскажите, пожалуйста, как лучше сделать индекс.
Строю систему для менеджмента спортивных мероприятий. Нужно на начальном этапе определиться с индексами.

Система многопользовательская
Итак есть
user - пользователь системы
event - спортивное мероприятие (у каждый пользователь может создать неограниченное число мероприятий)
competitors - участники мероприятий (в каждом мероприятии может быть сколько угодно участников)
splits - Сплиты участников (время пересечения отсечек на спортивной дистанции, у каждого участника сколько угодно сплитов)

Получается что в одном мероприятии может быть около 10 000 сплитов. А мероприятий может быть 10 в день.

Я хочу добавить в каждой таблице UUID Primary и составной индекс (event_id + id)
Подскажите, это верный подход?
Возможно стоит отказать от UUID и использовать в качестве Primary составной индекс из event_id+id (обычные числовые автоинкременты) ? Возможно надо не париться и просто использовать один числовой автоинкрементируемый ID?

Хочется, чтобы в пределах каждого мероприятия у участников и сплитов ID-шники начинались снова с единицы.

Подскажите, кто разбирается, а то такие знания только с опытом приобретаются..
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ответы на вопрос 2
@coderlex
Подскажите, это верный подход?

Это целиком зависит от запросов и их частоты. Хотябы оценочной по вашим прикидкам. Говорить что-то конкретное без подобной информации по этому поводу бесполезно. Если делать по уму, то для точного ответа нужна будет ещё и статистика. Заполните базу mock-данными, проидитесь по логам трассы и оцените, где нужны дополнительные индексы, а где только помешают. Не забывайте, выделение индекса - операция ресурсоемкая.
Ответ написан
Комментировать
tsklab
@tsklab
Здесь отвечаю на вопросы.
Хочется, чтобы в пределах каждого мероприятия у участников и сплитов ID-шники начинались снова с единицы.
Пронумеровать участников — это понятно и необходимо (или присвоить им постоянные номера). Пронумеровать мероприятия тоже нужно (этап 10 — понятно). А вот сквозная нумерация отсечек — совершенно не информативно — нумеровать их нужно для каждого участника отдельно, например, 85.25 — участник №85, отметка №25.
Да, соответственно, нумерацию записывать в отдельное, не ключевое поле, триггерами (отслеживать непрерывность нумерации ими же). Можно наложить уникальность в нужных диапазонах.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы