SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。 本文主要介绍了Mysql中explain的相关内容,涉及索引的部分知识,具有一定参考价值,需要的朋友可以了解下,希望能帮助到大家。一、MYSQL的索引
索引(Index):帮助Mysql高效获取数据的一种数据结构。用于提高查找效率,可以比作字典。可以简单理解为排好序的快速查找的数据结构。
索引的作用:便于查询和排序(所以添加索引会影响where 语句与 order by 排序语句)。
在数据之外,数据库还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用数据。这样就可以在这些数据结构上实现高级查找算法。这些数据结构就是索引。
索引本身也很大,不可能全部存储在内存中,所以索引往往以索引文件的形式存储在磁盘上。
我们平时所说的索引,如果没有特别指明,一般都是B树索引。(聚集索引、复合索引、前缀索引、唯一索引默认都是B+树索引),除了B树索引还有哈希索引。
优点: A、提高数据检索效率,降低数据库的IO成本 B、通过索引列对数据进行排序,降低了数据排序成本,降低了CPU的消耗。
缺点: A、索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引也是占用空间的。 B、对表进行INSERT、UPDATE、DELETE操作时,MYSQL不仅会更新数据,还要保存一下索引文件每次更新添加了索引列字段的相应信息。
在实际的生产环境中我们需要逐步分析,优化建立最优的索引,并要优化我们的查询条件。
索引的分类: 1、单值索引 一个索引只包含一个字段,一个表可以有多个单列索引。 2、唯一索引 索引列的值必须唯一,但允许有空值。 3、复合索引 一个索引包含多个列
一张表建议建立5个之内的索引
语法:
1、CREATE [UNIQUE] INDEX indexName ON myTable (columnName(length)); 2、ALTER myTable Add [UNIQUE] INDEX [indexName] ON (columnName(length));
删除:DROP INDEX [indexName] ON myTable;
查看: SHOW INDEX FROM table_name\G;
二、EXPLAIN 的作用
EXPLAIN :模拟Mysql优化器是如何执行SQL查询语句的,从而知道Mysql是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。 mysql> explain select * from tb_user;
+----+-------------+---------+------+---------------+------+---------+------+------+-------+
|