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;
posted @ 2026-08-30 19:05  清哥的码农生活  阅读(2)  评论(0)    收藏  举报