Я пытаюсь ускорить SELECT
запросов в таблицах MySQL, которые уже имеют некоторые индексы. Надеюсь, без существенного влияния на частые INSERT INTO
запросы, выполняемые в то же время (другими клиентами). Таблицы содержат миллионы записей и уже прошли размер в гигабайтах (у них есть поле BLOB).
В таблицах есть пара полей, описывающих непрерывный интервал (может быть интервалом времени в микросекундах, или числом выполнений, или версией, или чем-то еще). Эти два поля проиндексированы; У меня есть два индекса: один только для одного из полей (когда я запрашиваю его), а другой для обоих полей (которые также могут появляться во многих запросах).
Два других индекса-кандидата получены из идентификатора (например, имени файла), поскольку он также часто используется в запросах.
Коллега предлагает включить идентификатор в два предыдущих индекса. Тем не менее, я чувствую, что имеет смысл иметь отдельную клавишу . Я готовлю тест, чтобы выяснить, какой вариант лучше, но я ожидаю, что это займет пару дней. Тем временем я ищу прошлый опыт и / или совет относительно этого.
Итак, мои вопросы:
- Что идеально, создать новый индекс для идентификатора? Или включить его в интервальный индекс? То есть многие идентификаторы могут иметь один и тот же интервал, а многие интервалы могут иметь один и тот же идентификатор.
- Какой из двух вариантов должен занимать больше дискового пространства, особенно в таблицах с несколькими миллионами строк? Я полагаю, что «более быстрый», какой бы он ни был, будет также самым трудоемким.
- Я не знаю, решает ли создание нового индекса (например, опция отдельного индекса) ничего или мало помогает. Каков ваш прошлый опыт в этой или подобных ситуациях? Любой совет / документация, которую я могу исследовать конкретно по этой теме?