Без корректности, производительность не имеет значения. Так как вы говорите (в комментарии) ...
"Комбинация определенного значения в 1-м столбце + 2-м столбце НЕ МОЖЕТ существовать более одного раза в таблице."
... правильное состоит в том, чтобы поместить оба поля в составной ключ.
Чтобы эффективно принудительно применить этот ключ, однако вам нужен индекс. Итак, вам нужен по крайней мере один индекс прямо здесь. Вопрос в том, какой индекс? Это зависит от «направления», в котором вы хотите запросить данные:
- Если вам нужно эффективно ответить на вопрос «для данного
value1
, с которым value2
s связаны с ним», то индекс должен быть {value1, value2}
.
- Если вам нужно эффективно ответить на вопрос «для данного
value2
, с которым value1
связаны с ним», то индекс должен быть {value2, value1}
.
- Если вам нужно эффективно ответить на оба вопроса, тогда вам нужно оба индекса (но остерегайтесь цены, которую вы платите за вторичный индекс в кластеризованной таблице - см. «Недостатки кластеризации» в этой статье ).
Кстати, InnoDB создаст скрытый PK, если вы явно не указали какое-либо ограничение PK или UNIQUE. Это необходимо для кластеризации.
В СУБД, поддерживающей сжатие индекса (например, Oracle), вы можете сэкономить место, когда в переднем фронте индекса много повторяющихся значений. Хранилище дешево, но не в этом суть - меньшие данные фактически означают «больший» кеш.
Увы, MySQL не такая СУБД.
На более философском замечании не существует такого понятия, как "порядок", если вы сами не укажете его.
- В таблице на основе кучи (MyISAM) физический порядок строк в куче примерно соответствует порядку INSERTions, но его лучше рассматривать как случайный с точки зрения клиента.
- Кластерная таблица (InnoDB) - это, по сути, дерево, которое упорядочивает свои листы в соответствии с ключом кластеризации (которым является PK). Однако порядок результатов запроса не гарантируется , если в не указано ORDER BY.
- Индексы в некотором смысле «упорядочены», но вы не получите результат запроса в каком-либо конкретном порядке, даже если индекс используется, , если в не указано ORDER BY.
Во всех 3 случаях вам нужно ORDER BY, чтобы гарантировать, что результаты запроса будут возвращены в любом конкретном порядке.