美文网首页
Mysql索引的知识点

Mysql索引的知识点

作者: 风南子 | 来源:发表于2020-06-23 10:25 被阅读0次

1.索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,可以是主键索引(列值唯一,不可以有null)或唯一索引(列值唯一,可以为null),一个表可以有多个单列索引。  组合索引,即一个索引包含多个列,专门用于组合搜索,其效率大于索引合并。索引合并是指使用多个单列索引组合搜索。一个表上单列索引和组合索引总数建议不要超过5个。

2.创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件,如WHERE 子句的条件。

3.索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

4.索引大大提高了查询速度,但同时会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,   MySQL不仅要保存数据,还要保存索引文件。

5. 建立索引会占用磁盘空间的索引文件;

6.Mysql目前主要有以下索引类型:FULLTEXT,HASH,BTREE,RTREE。

7. FULLTEXT:全文索引,目前只有MyISAM引擎支持。其可以在CREATE TABLE ,ALTER TABLE ,CREATE INDEX 使用,不过只有 CHAR、VARCHAR ,TEXT 列上可以创建全文索引。它是为了解决WHERE name LIKE “%word%"这类针对文本的模糊查询效率较低的问题,对文本的内容进行分词,进行搜索。

8. HASH索引:由于HASH的唯一性及类似键值对的形式,很适合作为索引。HASH索引可以一次定位,不需要像树形索引那样逐层查找,因此具有极高的效率。但是,这种高效是有条件的,即只在“=”和“in”条件下高效,对于范围查询、排序及组合索引效率不高。

9. BTREE索引是一种将索引值按一定的算法,存入一个二叉树数据结构中,每次查询都是从树的入口root开始,依次遍历node,获取leaf。这是MySQL里默认和最常用的索引类型。

10. RTREE索引在MySQL很少使用,仅支持geometry数据类型,支持该类型的存储引擎有MyISAM、BDb、InnoDb、NDb、Archive几种,RTREE的优势在于范围查找。

11. 延伸-主键索引(聚集索引):就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的即为整张表的记录数据。聚集索引的叶子节点称为数据页,这个特性决定了索引组织表中的数据也是索引的一部分。

 12.延伸-唯一索引(辅助索引、二级索引):非主键索引,叶子节点=键值+书签。Innodb存储引擎的书签就是相应行数据的主键索引值。

  13.覆盖索引, 就是select的数据列只用从索引中就能够取得,不必从数据表中读取,即查询列要被所使用的索引覆盖。 如果一个索引包含了(或覆盖了)满足查询语句中字段[select子句]与条件[Where子句]的字段数据就是覆盖索引。不是所有类型的索引都可以成为覆盖索引。覆盖索引必须要存储索引的列,而哈希索引、空间索引和全文索引等都不存储索引列的值,所以MySQL只能使用B-Tree索引做覆盖索引。当发起一个被索引覆盖的查询(也叫作索引覆盖查询)时,在EXPLAIN的Extra列可以看到“Using index”的信息。

14.一般来说,在WHERE和JOIN中出现的列需要建立索引,但也不总是如此,因为MySQL只对<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE才会使用索引。

15.使用连接(JOIN)来代替子查询(Sub-Queries)- 连表时注意条件类型需一致,不要隐式转换。

16.mysql的limit语句是很方便,但是对记录很多的表并不适合直接使用,因为实践发现limit语句的查询时间与起始记录的位置成正比。优化:

(1)利用表的覆盖索引来加速分页查询;

(2)查询列多时,有两种方法,一种是id>=的形式,另一种就是利用join,如:

SELECT * FROM product WHERE ID > =(select id from product limit 900000, 1) limit 20

SELECT * FROM product a JOIN (select id from product limit 966666, 30) b ON a.ID = b.id

相关文章

  • 索引

    这道题目考察的知识点是MySQL组合索引(复合索引)的最左优先原则。 最左前缀匹配原则 在mysql建立联合索引时...

  • MySQL面试知识点追命连环问(三)锁机制、日志备份及分表策略

    上次我们讨论了MySQL的事务索引,SQL优化和处理器。 MySQL面试知识点追命连环问(二)事务、索引及SQL优...

  • MySQL知识_索引

    目录索引: ლ(′◉❥◉`ლ) 点击此链接 MySQL_博客园链接Mysql基础原理知识点总结狂神说 讲解mysql

  • MySQL索引及查询优化书目录

    MySQL索引的原理之索引目的 MySQL索引的原理之索引原理 MySQL索引的原理之索引的类型 MySQL索引的...

  • 什么是回表查询

    前置知识点索引数据结构mysql主要有两大索引:B-tree索引和hash索引,注意一个误区,这个不叫B减树,B树...

  • MySQL索引的使用

    MySQL索引 MySQL索引可以快速提高MySQL的检索速度。索引分单列索引和组合索引单列索引:即一个索引只包含...

  • 高性能的索引策略

    MySQL查询基础-查询执行过程 MySQL聚簇索引 MySQL覆盖索引 MySQL索引扫描排序 MySQL冗余和...

  • Mysql索引的知识点

    1.索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,可以是主键索引(列值唯一,不可以有null)或唯一...

  • Mysql索引与锁

    本文以Mysql5.7为例测试。 1:mysql索引方法 Mysql的索引方法分为btree索引和hash索引。 ...

  • 5.2MySQL创建高性能索引考察点

    MySQL索引的基础和类型延伸:MySQL索引的创建原则延伸:MySQL索引的注意事项 索引的基础索引类似于书籍的...

网友评论

      本文标题:Mysql索引的知识点

      本文链接:https://www.haomeiwen.com/subject/hxjcfktx.html