MYSQL INDEX FOR多个列组合?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL INDEX FOR多个列组合?相关的知识,希望对你有一定的参考价值。

请帮忙制作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);

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

答案

以下列组合将涵盖您的所有查询(为简单起见,我删除了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

以上是关于MYSQL INDEX FOR多个列组合?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:将连接后的多个值组合到一个结果列中

如何快速掌握 Navicat for PostgreSQL表索引

MySQL数据库的四类索引?

mysql索引

Mysql索引PRIMARYNORMALUNIQUEFULLTEXT 区别和使用场合

连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段