Если у вас есть N столбцов в таблице, каждая возможная комбинация столбцов равна 2 ^ N-1 (удаляя пустой набор). Для 10 столбцов это будет означать 1023 индекса, для 20 столбцов мы получим колоссальные 1048575 индексов. Большинство индексов никогда не будут использоваться, но должны быть приняты во внимание оптимизатором. Вполне возможно, что оптимизатор выберет неоптимальный индекс вместо лучшего. Я бы не стал идти по пути генерации всех видов индексов вместо того, чтобы пытаться выяснить, какие индексы действительно будут полезны.
РЕДАКТИРОВАТЬ исправлено количество возможных индексов
Как указывает Джефф , это даже хуже, чем 2 ^ N (установленная мощность), поскольку (3,2,1) явно отличается от (1,2,3). Для N столбцов мы можем выбрать первую позицию в индексе, который содержит все столбцы N способами. За вторую позицию по N-1 путям и т. Д. Поэтому мы в итоге получаем N! разные индексы в натуральную величину. Ни один из этих индексов не включен в другой индекс в этом наборе. Кроме того, мы не можем добавить еще один более короткий индекс, чтобы он не охватывался каким-либо полным индексом. Число индексов, следовательно, N !. Таким образом, пример для 10 столбцов становится 10! = 3628800 индексов и для 20 (барабанная дробь) 2432902008176640000 индексов. Это довольно большое число, если мы поставим точку для каждого индекса на один мм детали, световой луч пройдет 94 дня, чтобы пройти все точки. Все и все, не так ;-)