0
点赞
收藏
分享

微信扫一扫

MySQL 中的其他对象-索引

一 索引

MySQL 索引的建立对于 MySQL 的高效运行是很重要的,索引可以大大提高 MySQL

的检索速度。

二 MySQL 中的索引类型

• 普通索引

• 唯一索引

• 主键索引

• 组合索引

• 全文索引

三 普通索引

是最基本的索引,它没有任何限制。

在创建索引时,可以指定索引长度。length 为可选参数,表示索引的长度,只有字符串

类型的字段才能指定索引长度,如果是 BLOB 和 TEXT 类型,必须指定 length。

创建索引时需要注意:

如果指定单列索引长度,length 必须小于这个字段所允许的最大字符个数。

查询索引:SHOW INDEX FROM table_name

MySQL 中的其他对象-索引_主键

3.1直接创建索引

CREATE INDEX index_name ON table(column(length))

3.2修改表添加索引

ALTER TABLE table_name ADD INDEX index_name (column(length))

3.3创建表时指定索引列

CREATE TABLE ​​table​​ (

COLUMN TYPE ,

PRIMARY KEY (​​id​​),

INDEX index_name (column(length))

)

3.4删除索引

DROP INDEX index_name ON table

四 唯一索引

唯一索引与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。它有以

下几种创建方式:

4.1创建唯一索引

CREATE UNIQUE INDEX indexName ON table(column(length))

MySQL 中的其他对象-索引_主键_02

4.2修改表添加唯一索引

ALTER TABLE table_name ADD UNIQUE indexName (column(length))

4.3创建表时指定唯一索引

CREATE TABLE ​​table​​ (

COLUMN TYPE ,

PRIMARY KEY (​​id​​),

UNIQUE index_name (column(length))

)

五 主键索引

主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建

表的时候同时创建主键索引。

5.1修改表添加主键索引

ALTER TABLE 表名 ADD PRIMARY KEY(列名)

5.2创建表时指定主键索引

CREATE TABLE ​​table​​ (

COLUMN TYPE ,

PRIMARY KEY(column)

)

六 组合索引

组合索引是指使用多个字段创建的索引,只有在查询条件中使用了创建索引时的第一个

字段,索引才会被使用(最左前缀原则)。

6.1最左前缀原则

就是最左优先。

如:我们使用表中的 name,address,salary 创建组合索引,那么想要组合索引生效,

我们只能使用如下组合:

name/address/salary

name/address

name/

如果使用 addrees/salary 或者是 salary 则索引不会生效。

6.2修改添加组合索引

ALTER TABLE table_name ADD INDEX index_name (column(length),column(length))

MySQL 中的其他对象-索引_全文索引_03

6.3创建表时创建组合索引

CREATE TABLE ​​table​​ (

COLUMN TYPE ,

INDEX index_name (column(length),column(length))

)

七 全文索引

全文索引(FULLTEXT INDEX)主要用来查找文本中的关键字,而不是直接与索引中的值

相比较。FULLTEXT 索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的 where

语句的参数匹配。FULLTEXT 索引配合 match against 操作使用,而不是一般的 where 语句

加 like。全文索引可以从 CHAR、VARCHAR 或 TEXT 列中作为 CREATE TABLE 语句的一部分

被创建,或是随后使用 ALTER TABLE 添加。不过切记对于大容量的数据表,生成全文索

引是一个非常消耗时间非常消耗硬盘空间的做法。

7.1修改添加全文索引

ALTER TABLE table_name ADD FULLTEXT index_content(content)

MySQL 中的其他对象-索引_主键_04

7.2创建表时创建全文索引

CREATE TABLE ​​table​​ (

COLUMN TYPE ,

FULLTEXT index_name (column)

)

7.3删除全文索引

DROP INDEX index_name ON table

7.4使用全文索引

全 文 索 引 的 使 用 与 其 他 索 引 不 同 。 在 查 询 语 句 中 需 要 使 用 match(column)

against(‘content’) 来检索数据。

7.5全文解析器

全文索引中基本单位是”词”。分词,全文索引是以词为基础的,MySQL 默认的分词是

所有非字母和数字的特殊符号都是分词符。在检索数据时我们给定的检索条件也是词。

MySQL 中默认的全文解析器不支持中文分词。如果数据含有中文需要更换全文解析器

NGRAM。

7.6使用全文索引

SELECT 投影列 FROM 表名 WHERE MATCH(全文索引列名) AGAINST(‘搜索内容’)

MySQL 中的其他对象-索引_mysql_05

MySQL 中的其他对象-索引_mysql_06

7.7更换全文解析器

在创建全文索引时可以指定 ngram 解析器

ALTER TABLE table_name ADD FULLTEXT index_content(content) WITH PARSER

NGRAM

7.8使用全文索引(中文)

MySQL 中的其他对象-索引_主键_07


举报

相关推荐

0 条评论