MYSQL ИНДЕКС ДЛЯ Несколько комбинаций столбцов?

0

Пожалуйста, помогите сделать индекс Mysql. Для нескольких условий. Пример :

Select id from table_name where col1='' and col2='' and col3='' and col4=''
and col5=''and col6='';

Теперь количество комбинаций где условия, Первые два столбца col1 и col2 исправить; другие комбинации IS: -

where col1='' and col2='' and col3='' ;

where col1='' and col2='' and col3='' and col4='';

where col1='' and col2='' and col3='' and col4=''and col5='';

where col1='' and col2='' and col5=''and col6='';

where col1='' and col2='' and col4=''and col5=''and col6='';

where col1='' and col2='' and col4='' and col6=''

where col1='' and col2='' and col4='';

where col1='' and col2='' and col5='';

where col1='' and col2='' and col6='';

where col1='' and col2='' and col3='' and col5='';

У меня есть только один Индекс

create INDEX 'allpair' ON TABLE_NAME (col1,col2,col3,col4,col5,col6);

Пожалуйста, помогите составить то, что является надлежащим индексом для соответствия всем этим, где сочетаются. Заранее спасибо.

  • 0
    Ваш индекс allpair не будет охватывать все запросы в вашем списке. Если у вас есть составной индекс (col1, col2, col3) , то только в тех случаях, когда предложения для col1 , (col1, col2) или (col1, col2, col3) будут использовать этот индекс.
  • 0
    @Tim Biegeleisen, сэр, пожалуйста, покажите индексы и позвольте мне объяснить об этом
Показать ещё 2 комментария
Теги:
indexing

1 ответ

3
Лучший ответ

Следующие комбинации столбцов будут охватывать все ваши запросы (я просто удалил префикс col для простоты):

 1  2  3 

 1  2  3  4

 1  2  3  4  5

 1  2  5  6

 1  2  4  5  6

 1  2  4  6

 1  2  4

 1  2  5

 1  2  6

 1  2  3  5

Однако есть некоторые индексы, которые охватывают более одного из запросов. Например, индекс 1 2 3 4 5 уже охватывает 1 2 3 и 1 2 3 4 потому что эти столбцы включены в самую левую часть индекса 1 2 3 4 5.

Таким образом, комбинации столбцов, которые вам нужны, будут удалять из исходного списка те элементы, которые в самом деле содержатся в больших элементах:

 1  2  3  4  5

 1  2  5  6

 1  2  4  5  6

 1  2  4  6

 1  2  6

 1  2  3  5
  • 0
    как покрыть другое 1 2 5 6, 1 2 4 5 6, 1 2 4 6, 1 2 6, 1 2 3 5
  • 0
    Вам нужно будет добавить новый индекс по комбинации, если комбинация уже не присутствует ни в одном из существующих индексов, начиная слева. Примите во внимание, что, например, если у вас уже есть индекс 1 2 6 и вам нужно добавить индекс 1 2 6 5 , старый становится ненужным.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню