MYSQL INDEX FOR多个列组合?

问题描述 投票:0回答:1

请帮忙制作Mysql索引对于多个where条件示例:

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

现在条件的组合数量,前两列col1col2是固定的;其他组合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);

请根据这些组合来帮助制作适当的索引。提前致谢。

mysql sql 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 31 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
© www.soinside.com 2019 - 2024. All rights reserved.