MYSQL 索引
参考: https://www.cnblogs.com/wulw829/p/11316562.html
索引类型
Normal 普通索引
Unique 唯一索引
Full Text 全文索引
SPATIAL 空间索引

Normal 普通索引
表示普通索引,大多数情况下都可以使用
Unique 唯一索引
表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique
约束唯一标识数据库表中的每一条记录,即在单表中不能用每条记录是唯一的(例如身份证就是唯一的),Unique(要求列唯一)和Primary Key(primary key = unique + not null 列唯一)约束均为列或列集合中提供了唯一性的保证,Primary Key是拥有自动定义的Unique约束,但是每个表中可以有多个Unique约束,但是只能有一个Primary Key约束。
Full Text 全文索引
表示全文收索,在检索长文本的时候,效果最好,短文本建议使用Index,但是在检索的时候数据量比较大的时候,现将数据放入一个没有全局索引的表中,然后在用Create Index创建的Full Text索引,要比先为一张表建立Full Text然后在写入数据要快的很多
FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。
SPATIAL 空间索引
空间索引是对空间数据类型的字段建立的索引,MYSQL中的空间数据类型有4种,分别是GEOMETRY、POINT、LINESTRING、POLYGON。MYSQL使用SPATIAL关键字进行扩展,使得能够用于创建正规索引类型的语法创建空间索引。创建空间索引的列,必须将其声明为NOT NULL,空间索引只能在存储引擎为MYISAM的表中创建
索引方法
BTREE
HASH

两个索引方法差异:
https://blog.csdn.net/kidoo1012/article/details/70207519/
1:创建索引
-- 10.4索引
-- 创建索引
CREATE TABLE fruit1
(
id INT NOT NULL,
name VARCHAR(50) NOT NULL,
price DECIMAL(10,2) not null,
city VARCHAR(100) not null,
INDEX IdxCity(city)
);
-- 唯一键索引
CREATE TABLE fruit2
(
id INT NOT NULL,
name VARCHAR(50) NOT NULL,
price DECIMAL(10,2) not null,
city VARCHAR(100) not null,
UNIQUE INDEX UniqIdx(id)
);
-- 多列索引
CREATE TABLE fruit3
(
id INT NOT NULL,
name VARCHAR(50) NOT NULL,
price DECIMAL(10,2) not null,
city VARCHAR(100) not null,
INDEX MoreIdx(id,name)
);
-- 全文索引
CREATE TABLE fruit4
(
id INT NOT NULL,
name VARCHAR(50) NOT NULL,
price DECIMAL(10,2) not null,
city VARCHAR(100) not null,
FULLTEXT INDEX FullIdx(city)
) ENGINE=MyISAM;
2:命令处理索引
--基本索引
CREATE INDEX indexName ON table_name (column_name)
ALTER table tableName ADD INDEX indexName(columnName)
--增加唯一键索引
ALTER TABLE `databasename`.`tablename` ADD UNIQUE INDEX `indexname`(`fieldname`);
--删除索引
DROP INDEX [indexName] ON mytable;
--显示索引
SHOW INDEX FROM datatype;

浙公网安备 33010602011771号