MySQLケースコンバット-MySQLデータベースインデックス強化演習

MySQLデータベースインデックス強化演習

序文

この環境は、
特定の構築のためにMySQL-5.7.14を構築するためのCentos7.8システムに基づいています。MySQL-5.7.14環境構築を参照してください。


	表结构如下:
	writers表结构
						    
	字段名     数据类型         主键   外键   非空   唯一   自增
						    
	w_id       SMALLINT(11)      是     否     是    是      是
						    
	w_name     VARCHAR(255)      否     否     是    否      否
						    
	w_address  VARCHAR(255)      否     否     否    否      否

	w_age      CHAR(2)           否     否     是    否      否

	w_note     VARCHAR(255)      否     否     否    否      否






	(1)在数据库里创建表writers,存储引擎为MyISAM,创建表的同时在w_id字段上添加名称为UniqIdx的唯一索引
		创建writers表
		mysql> create table writers
		-> (w_id SMALLINT(11) primary key auto_increment,
		-> w_name VARCHAR(255) not null,
		-> w_address VARCHAR(255),
		-> w_age CHAR(2) not null,
		-> w_note VARCHAR(255))
		-> ENGINE=MyISAM  DEFAULT CHARSET=utf8;
		
		查看表结构
		mysql> desc writers;
		+-----------+--------------+------+-----+---------+----------------+
		| Field     | Type         | Null | Key | Default | Extra          |
		+-----------+--------------+------+-----+---------+----------------+
		| w_id      | smallint(11) | NO   | PRI | NULL    | auto_increment |
		| w_name    | varchar(255) | NO   |     | NULL    |                |
		| w_address | varchar(255) | YES  |     | NULL    |                |
		| w_age     | char(2)      | NO   |     | NULL    |                |
		| w_note    | varchar(255) | YES  |     | NULL    |                |
		+-----------+--------------+------+-----+---------+----------------+
		
		查看建表信息
		mysql> show create table writers\G
		*************************** 1. row ***************************
			   Table: writers
		Create Table: CREATE TABLE `writers` (
		  `w_id` smallint(11) NOT NULL AUTO_INCREMENT,
		  `w_name` varchar(255) NOT NULL,
		  `w_address` varchar(255) DEFAULT NULL,
		  `w_age` char(2) NOT NULL,
		  `w_note` varchar(255) DEFAULT NULL,
		  PRIMARY KEY (`w_id`)
		) ENGINE=MyISAM DEFAULT CHARSET=utf8



	(2)使用alter table语句在w_name字段上建立nameIdx的普通索引
		mysql> alter table writers
		-> add index nameIdx(w_name);
		
		mysql> show create table writers\G
		*************************** 1. row ***************************
			   Table: writers
		Create Table: CREATE TABLE `writers` (
		  `w_id` smallint(11) NOT NULL AUTO_INCREMENT,
		  `w_name` varchar(255) NOT NULL,
		  `w_address` varchar(255) DEFAULT NULL,
		  `w_age` char(2) NOT NULL,
		  `w_note` varchar(255) DEFAULT NULL,
		  PRIMARY KEY (`w_id`),
		  KEY `nameIdx` (`w_name`)
		) ENGINE=MyISAM DEFAULT CHARSET=utf8
		

	(3)使用CREATE INDEX 语句在w_address和w_age字段上面建立名称为MultiIdx的组合索引
		mysql> create index MultiIdx on writers(w_address,w_age);
		mysql> show create table writers\G
		*************************** 1. row ***************************
			   Table: writers
		Create Table: CREATE TABLE `writers` (
		  `w_id` smallint(11) NOT NULL AUTO_INCREMENT,
		  `w_name` varchar(255) NOT NULL,
		  `w_address` varchar(255) DEFAULT NULL,
		  `w_age` char(2) NOT NULL,
		  `w_note` varchar(255) DEFAULT NULL,
		  PRIMARY KEY (`w_id`),
		  KEY `nameIdx` (`w_name`),
		  KEY `MultiIdx` (`w_address`,`w_age`)
		) ENGINE=MyISAM DEFAULT CHARSET=utf8


	(4)使用create index语句在w_note字段上建立名称为FTIdex的全文索引
		mysql> create fulltext index FTIdex on writers(w_note);

		mysql> show create table writers\G
		*************************** 1. row ***************************
			   Table: writers
		Create Table: CREATE TABLE `writers` (
		  `w_id` smallint(11) NOT NULL AUTO_INCREMENT,
		  `w_name` varchar(255) NOT NULL,
		  `w_address` varchar(255) DEFAULT NULL,
		  `w_age` char(2) NOT NULL,
		  `w_note` varchar(255) DEFAULT NULL,
		  PRIMARY KEY (`w_id`),
		  KEY `nameIdx` (`w_name`),
		  KEY `MultiIdx` (`w_address`,`w_age`),
		  FULLTEXT KEY `FTIdex` (`w_note`)
		) ENGINE=MyISAM DEFAULT CHARSET=utf8

		

	(5)删除名为FTIdx的全文索引
		mysql> drop index FTIdex on writers;
		
		mysql> show create table writers\G
		*************************** 1. row ***************************
			   Table: writers
		Create Table: CREATE TABLE `writers` (
		  `w_id` smallint(11) NOT NULL AUTO_INCREMENT,
		  `w_name` varchar(255) NOT NULL,
		  `w_address` varchar(255) DEFAULT NULL,
		  `w_age` char(2) NOT NULL,
		  `w_note` varchar(255) DEFAULT NULL,
		  PRIMARY KEY (`w_id`),
		  KEY `nameIdx` (`w_name`),
		  KEY `MultiIdx` (`w_address`,`w_age`)
		) ENGINE=MyISAM DEFAULT CHARSET=utf8

おすすめ

転載: blog.csdn.net/XY0918ZWQ/article/details/113602693