实验过程及结构如下:
create table test7(id int,name1
varchar(100),name2 varchar(100),name3 varchar(100),name4
varchar(100),name5 varchar(100),name6
varchar(100))charset=utf8
engine=innodb;
create index test7_name1 on test7(name1);
create index test7_name2 on test7(name2);
create index test7_name3 on test7(name3);
create index test7_name4 on test7(name4);
create index test7_name5 on test7(name5);
create index test7_name6 on test7(name6);
************************创建6个单列索引没有问题*************************
create table test8(id int,name1
varchar(100),name2 varchar(100),name3 varchar(100),name4
varchar(100),name5 varchar(100),name6
varchar(100),name7
varchar(100),name8
varchar(100),name9 varchar(100),name10 varchar(100),name11
varchar(100),name12 varchar(100),name13 varchar(100),name14
varchar
(100),name15 varchar(100),name16
varchar(100),name17 varchar(100),name18
varchar(100))charset=utf8 engine=innodb;
create index test8_name1 on test8(name1);
create index test8_name2 on test8(name2);
create index test8_name3 on test8(name3);
create index test8_name4 on test8(name4);
create index test8_name5 on test8(name5);
create index test8_name6 on test8(name6);
create index test8_name7 on test8(name7);
create index test8_name8 on test8(name8);
create index test8_name9 on test8(name9);
create index test8_name10 on test8(name10);
create index test8_name11 on test8(name11);
create index test8_name12 on test8(name12);
create index test8_name13 on test8(name13);
create index test8_name14 on test8(name14);
create index test8_name15 on test8(name15);
create index test8_name16 on test8(name16);
create index test8_name17 on test8(name17);
create index test8_name18 on test8(name18);
**********************创建18个单列索引没有问题***************************
创建36个索引会不会出现问题?
create table test9(id int,name1
varchar(100),name2 varchar(100),name3 varchar(100),name4
varchar(100),name5 varchar(100),name6
varchar(100),name7
varchar(100),name8
varchar(100),name9 varchar(100),name10 varchar(100),name11
varchar(100),name12 varchar(100),name13 varchar(100),name14
varchar
(100),name15 varchar(100),name16
varchar(100),name17 varchar(100),name18 varchar(100),name19
varchar(100),name20 varchar(100),name21
varchar(100),name22
varchar(100),name23
varchar(100),name24 varchar(100),name25 varchar(100),name26
varchar(100),name27 varchar(100),name28 varchar(100),name29
varchar
(100),name30 varchar(100),name31
varchar(100),name32 varchar(100),name33 varchar(100),name34
varchar(100),name35 varchar(100),name36
varchar(100))
charset=utf8 engine=innodb;
create index test9_name1 on test9(name1);
create index test9_name2 on test9(name2);
create index test9_name3 on test9(name3);
create index test9_name4 on test9(name4);
create index test9_name5 on test9(name5);
create index test9_name6 on test9(name6);
create index test9_name7 on test9(name7);
create index test9_name8 on test9(name8);
create index test9_name9 on test9(name9);
create index test9_name10 on test9(name10);
create index test9_name11 on test9(name11);
create index test9_name12 on test9(name12);
create index test9_name13 on test9(name13);
create index test9_name14 on test9(name14);
create index test9_name15 on test9(name15);
create index test9_name16 on test9(name16);
create index test9_name17 on test9(name17);
create index test9_name18 on test9(name18);
create index test9_name19 on test9(name19);
create index test9_name20 on test9(name20);
create index test9_name21 on test9(name21);
create index test9_name22 on test9(name22);
create index test9_name23 on test9(name23);
create index test9_name24 on test9(name24);
create index test9_name25 on test9(name25);
create index test9_name26 on test9(name26);
create index test9_name27 on test9(name27);
create index test9_name28 on test9(name28);
create index test9_name29 on test9(name29);
create index test9_name30 on test9(name30);
create index test9_name31 on test9(name31);
create index test9_name32 on test9(name32);
create index test9_name33 on test9(name33);
create index test9_name34 on test9(name34);
create index test9_name35 on test9(name35);
create index test9_name36 on test9(name36);
**********************创建36个单列索引没有问题***************************
后续不再测试,因为单表索引过多反而会降低数据库的效率。关于数据库的索引,要结合博客
一起分析,选择合适的索引。
得出一些结论:
1)
InnoDB引擎单表的索引数量可以达到36个没有问题
2) InnoDB引擎,utf8编码单表中设置的单列索引最大长度不超过256个字符
3) InnoDB引擎,utf8编码单表中设置的的联合索引和的总长度不能超过256个字符