扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这篇文章主要介绍“MySQL索引详细介绍”,在日常操作中,相信很多人在Mysql索引详细介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql索引详细介绍”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
创新互联建站长期为千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为江永企业提供专业的成都网站设计、成都网站建设、外贸网站建设,江永网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。
简述:索引(Index)是一种帮助mysql高效获取数据的一数据结构。
详述:除数据本身外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构叫索引。
## 1. 创建索引
mysql> create index idx_employee_username on employee(username);
Query OK, 0 rows affected (1.71 sec)
Records: 0 Duplicates: 0 Warnings: 0
## 2. 查询索引。从查询结果来看,索引的类型是B树
mysql> show index from employee;
+----------+------------+-----------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression |
+----------+------------+-----------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| employee | 1 | idx_employee_username | 1 | username | A | 0 | NULL | NULL | YES | BTREE | | | YES | NULL |
+----------+------------+-----------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
1 row in set (1.73 sec)
注意:索引本身也很大,不可能全部存储在内存中,因此索引索引往往以索引文件的形式存储到磁盘中;如果没有特定说明,索引对应的数据结构都是B树。
B树:它的设计思想是,将相关数据尽量集中在一起,以便一次读取多个数据,减少硬盘操作次数。是对二叉查找树的改进。有以下三个特点:
CREATE [UNIQUE] INDEX indexName ON tableName(columnName);
和
ALERT tableName ADD [UNIQUE] INDEX indexName ON (columnName);
DROP INDEX [indexName] ON tableName;
SHOW INDEX FROM tableName;
mysql中有专门负责优化SELECT语句的优化器,主要功能:通过计算分析系统中收集到的统计信息,为客户端请求的Query提高其默认的最优执行计划(可能和我们认为的最优相违背,这部分耗费时间最长)
Explain解释执行可查看sql运行状态,语法如下:EXPLAIN sql语句
mysql> explain select * from employee where username='jhon';
+----+-------------+----------+------------+------+-----------------------+-----------------------+---------+-------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+----------+------------+------+-----------------------+-----------------------+---------+-------+------+----------+-------+
| 1 | SIMPLE | employee | NULL | ref | idx_employee_username | idx_employee_username | 83 | const | 1 | 100.00 | NULL |
+----+-------------+----------+------------+------+-----------------------+-----------------------+---------+-------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)
到此,关于“Mysql索引详细介绍”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流