VPS测评 VPS推荐 VPS优惠
Linux运维

MYSQL索引创建和使用

索引介绍

索引是排序的,用于快速查找的特殊数据结构,它定义在作为查找条件的字段上,又叫key(键),索引通过存储引擎来实现。InnoDB使用B+Tree索引。

优点:

  • 索引可以降低服务需要扫描的数据量,减少了IO次数
  • 索引可以帮助服务器避免排序和使用临时表
  • 索引可以帮助将随机I/O转为顺序I/O

缺点:

  • 占用额外空间,影响插入速度

管理索引

创建索引:

CREATE [UNIQUE] INDEX index_name ON tbl_name (index_col_name[(length)],...);
ALTER TABLE tbl_name ADD INDEX index_name(index_col_name[(length)]);

范例:两种给students表格的name字段创建索引的方法

CREATE INDEX idx_name ON students(name);
ALTER TABLE students ADD INDEX idx_name(name);

删除索引:

DROP INDEX index_name ON tbl_name;
ALTER TABLE tbl_name DROP INDEX index_name(index_col_name);

查看索引:

SHOW INDEX FROM [db_name.]tbl_name;

优化表空间:

OPTIMIZE TABLE tb_name;

EXPLAIN 工具

EXPLAIN命令可以分析索引的有效性,获取查询执行计划信息,用来查看查询优化器如何执行查询。

语法:

EXPLAIN SELECT clause
explain 输出信息说明

type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:

NULL> system >const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

一般来说,得保证查询至少达到range级别,最好能达到ref

type 类型说明

PROFILE 工具

设置系统变量profiling后,可以查看语句执行的时长和详细过程。(此功能在未来的版本会被弃用)

SET profiling = ON;

查看语句执行过程

SHOW profiles;

显示某条语句更详细的执行步骤,#表示语句编号

Show profile for query #;

显示某条语句cpu的使用情况

Show profile cpu for query #;
未经允许不得转载:青蛙主机 » MYSQL索引创建和使用

VPS相关常用工具

PING测试工具自用毛子接码站