- 索引声明与使用
MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。
从功能逻辑上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索引。
按照物理实现方式,索引可以分为 2 种:聚簇索引和非聚簇索引。
按照作用字段个数进行划分,分成单列索引和联合索引。
1) 创建表的时候创建索引
CREATE TABLE book(book_id INT ,book_name VARCHAR(100),authors VARCHAR(100),info VARCHAR(100) ,comment VARCHAR(100),year_publication YEAR,// 声明索引INDEX(book_name));// 查看索引SHOW INDEX FROM book;
CREATE TABLE test1(id INT NOT NULL,name varchar(30) NOT NULL,UNIQUE INDEX uk_idx_id(id) // id唯一,但可以添加为null);
CREATE TABLE student (id INT(10) UNSIGNED AUTO_INCREMENT ,student_no VARCHAR(200),student_name VARCHAR(200),PRIMARY KEY(id));// 删除主键索引ALTER TABLE studentdrop PRIMARY KEY ;
CREATE TABLE test2(id INT NOT NULL,name CHAR(50) NULL,INDEX single_idx_name(name));
CREATE TABLE test3(id INT(11) NOT NULL,name CHAR(30) NOT NULL,age INT(11) NOT NULL,info VARCHAR(255),INDEX multi_idx(id,name,age));
// 只能在 CHAR VARCHAR TEXT列创建CREATE TABLE test4(id INT NOT NULL,name CHAR(30) NOT NULL,age INT NOT NULL,info VARCHAR(255),FULLTEXT INDEX futxt_idx_info(info(50)) // 拿前五十个构建索引) ENGINE=MyISAM;
CREATE TABLE test5(geo GEOMETRY NOT NULL,SPATIAL INDEX spa_idx_geo(geo)) ENGINE=MyISAM;
- 在已经存在的表上创建索引
ALTER TABLE table_name ADD [UNIQUE | FULLTEXT | SPATIAL] [INDEX | KEY][index_name] (col_name[length],...) [ASC | DESC]
CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_nameON table_name (col_name[length],...) [ASC | DESC]
