Я развертываю приложение Rails, которое объединяет данные о купонах различных сторонних поставщиков в доступную для поиска базу данных.По каждому купону проводится поиск по четырем полям: заголовок, код купона, описание и срок действия.
Поскольку некоторые из этих сторонних поставщиков довольно плохо справляются с сортировкой своих данных, а яЯ не хочу, чтобы в мою базу данных проникли дубликаты купонов, я внедрил уникальный составной индекс для этих четырех столбцов.Это препятствует тому, чтобы один и тот же купон вставлялся в мою базу данных более одного раза.
Учитывая, что я ищу по этим столбцам (с помощью простого сопоставления WHERE column LIKE %whatever%
на данный момент), я хочу, чтобы эти столбцы были по отдельности для каждого из них.Воспользуйтесь преимуществами увеличения скорости за счет их индексации.
Итак, вот мой вопрос: будет ли составной индекс по столбцам все обеспечивать такое же увеличение скорости поиска, как если бы я применял отдельный индекс каждый столбец?Или это только гарантирует уникальность между строками?
Несколько усложняет то, что я занимаюсь разработкой на Rails, поэтому мой вопрос касается как SQLite3, так и MySQL (и всего, что мы могли бы перенести в будущем)вместо одной конкретной СУБД.
Я предполагаю, что индексы будут ускорять поиск по отдельным столбцам, но мне действительно не хватает опыта работы с базами данных "под капотом", чтобы чувствоватьУверен в этом суждении.
Спасибо за предоставленную экспертизу.