MySQL 索引

MySQL 索引

索引作为一种数据结构,其用途是用于提升检索数据的效率。

1、MySQL 索引的分类

普通索引(INDEX):索引列值可重复

唯一索引(UNIQUE):索引列值必须唯一,可以为NULL

主键索引(PRIMARY KEY):索引列值必须唯一,不能为NULL,一个表只能有一个主键索引

全文索引(FULL TEXT):给每个字段创建索引

2、MySQL 不同类型索引用途和区别

普通索引常用于过滤数据。例如,以商品种类作为索引,检索种类为“手机”的商品。

唯一索引主要用于标识一列数据不允许重复的特性,相比主键索引不常用于检索的场景。

主键索引是行的唯一标识,因而其主要用途是检索特定数据。

全文索引效率低,常用于文本中内容的检索。

3、MySQL 使用索引

1)创建索引

普通索引(INDEX)

# 在创建表时指定
mysql> CREATE TABLE student (
   id INT NOT NULL,
   name VARCHAR(100) NOT NULL,
   birthday DATE,
   sex CHAR(1) NOT NULL,
    INDEX nameIndex (name(50))
);
# 基于表结构创建
mysql> CREATE INDEX nameIndex ON student(name(50));
# 修改表结构创建
mysql> ALTER TABLE student ADD INDEX nameIndex(name(50));

唯一索引(UNIQUE)

# 在创建表时指定
mysql> CREATE TABLE student (
   id INT NOT NULL,
   name VARCHAR(100) NOT NULL,
   birthday DATE,
   sex CHAR(1) NOT NULL,
    UNIQUE idIndex (id)
);
# 基于表结构创建
mysql> CREATE UNIQUE INDEX idIndex ON student(id)

主键索引(PRIMARY KEY)

# 创建表时时指定
mysql> CREATE TABLE student (
   id INT,
   name VARCHAR(100) NOT NULL,
   birthday DATE,
   sex CHAR(1) NOT NULL,
    PRIMARY KEY (id)
);
# 修改表结构创建
mysql> ALTER TABLE student ADD PRIMARY KEY (id):

主键索引不能使用基于表结构创建的方式创建。

2)删除索引

普通索引(INDEX)

# 直接删除
mysql> DROP INDEX nameIndex ON student;
# 修改表结构删除
mysql> ALTER TABLE student DROP INDEX nameIndex;

唯一索引(UNIQUE)

# 直接删除
mysql> DROP INDEX idIndex ON student;
# 修改表结构删除
mysql> ALTER TABLE student DROP INDEX idIndex;

主键索引(PRIMARY KEY)

mysql> ALTER TABLE student DROP PRIMARY KEY;

主键不能采用直接删除的方式删除。

3)查看索引

mysql> SHOW INDEX FROM student;

**4、**选择索引的原则

常用于查询条件的字段较适合作为索引,例如WHERE语句和JOIN语句中出现的列;

唯一性太差的字段不适合作为索引,例如性别;

更新过于频繁(更新频率远高于检索频率)的字段不适合作为索引;

使用索引的好处是索引通过一定的算法建立了索引值与列值直接的联系,可以通过索引直接获取对 应的行数据,而无需进行全表搜索,因而加快了检索速度;

但由于索引也是一种数据结构,它需要占据额外的内存空间,并且读取索引也加会大IO资源的消耗,因而索引并非越多越好,且对过小的表也没有添加索引的必要。

MySQL索引是一种数据结构,可以帮助MySQL快速定位和访问表中的数据。使用索引可以提高查询效率,降低数据库的负载。下面是MySQL索引的一些基本概念和使用方法: 1. 索引类型 MySQL支持多种类型的索引,包括B树索引、哈希索引、全文索引等。其中,B树索引是最常用的一种,也是默认的索引类型。B树索引可以用于精确匹配和范围查询,而哈希索引主要用于等值查询,全文索引则用于文本检索。 2. 索引创建 可以在创建表时指定索引,例如: ``` CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(50), INDEX idx_email (email) ); ``` 也可以在已有的表上添加索引,例如: ``` ALTER TABLE users ADD INDEX idx_name (name); ``` 3. 索引使用 查询语句中可以使用WHERE子句和ORDER BY子句来利用索引,例如: ``` SELECT * FROM users WHERE email = 'example@example.com'; SELECT * FROM users WHERE name LIKE 'John%' ORDER BY id DESC; ``` 需要注意的是,索引并不是越多越好,过多的索引会占用过多的磁盘空间并降低写操作的性能。因此,需要根据实际情况选择合适的索引。同时,还需要定期对索引进行维护,包括优化查询语句、删除不必要的索引等。 4. 索引优化 MySQL提供了一些工具来优化索引,例如EXPLAIN命令可以帮助分析查询语句的执行计划,找出慢查询和不必要的全表扫描。可以使用OPTIMIZE TABLE命令来优化表的索引和碎片,从而提高查询性能。还可以使用缓存来避免频繁的查询操作,例如使用Memcached或Redis等缓存工具。 以上就是MySQL索引的一些基本概念和使用方法,需要根据实际情况进行选择和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值