關於MySQL一張表最多支持創建16個索引的探究和驗證

一、MySql官網文檔解釋

在**mysql5.***中描述如下

Different limits related to tables and indexes. For example, the maximum number of ordered indexes in the cluster is determined by MaxNoOfOrderedIndexes, and the maximum number of ordered indexes per table is 16.

**mysql8.***中描述如下

A table can contain a maximum of 64 secondary indexes.A maximum of 16 columns is permitted for multicolumn indexes. Exceeding the limit returns an error.
ERROR 1070 (42000): Too many key parts specified; max 16 parts allowed

二、測試驗證

mysql版本爲mysql-5.5.61
1、創建測試表blog_user,包含17個列

create table blog_user
(
  user_Name1 char(15) not null,
  user_Name2 char(15) not null,
  user_Name3 char(15) not null,
  user_Name4 char(15) not null,
  user_Name5 char(15) not null,
  user_Name6 char(15) not null,
  user_Name7 char(15) not null,
  user_Name8 char(15) not null,
  user_Name9 char(15) not null,
  user_Name10 char(15) not null,
  user_Name11 char(15) not null,
  user_Name12 char(15) not null,
  user_Name13 char(15) not null,
  user_Name14 char(15) not null,
  user_Name15 char(15) not null,
  user_Name16 char(15) not null,
  user_Name17 char(15) not null,
  primary key(user_Name1)          
)engine=innodb default charset=utf8 auto_increment=1;

執行結果如下(正常執行):
在這裏插入圖片描述
2.創建包含16個列的索引

CREATE INDEX idx_blog_user ON blog_user(
	user_Name1,
	user_Name2,
	user_Name3,
	user_Name4,
	user_Name5,
	user_Name6,
	user_Name7,
	user_Name8,
	user_Name9,
	user_Name10,
	user_Name11,
	user_Name12,
	user_Name13,
	user_Name14,
	user_Name15,
	user_Name16
);

執行結果如下(正常執行):
在這裏插入圖片描述
3.創建包含17個列的索引

CREATE INDEX idx_blog_user ON blog_user(
	user_Name1,
	user_Name2,
	user_Name3,
	user_Name4,
	user_Name5,
	user_Name6,
	user_Name7,
	user_Name8,
	user_Name9,
	user_Name10,
	user_Name11,
	user_Name12,
	user_Name13,
	user_Name14,
	user_Name15,
	user_Name16,
	user_Name17
);

執行結果如下(已經報錯):
在這裏插入圖片描述

三、總結

MySQL 一張表最多支持創建16個索引。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章