mysql-索引

一:什么是索引

索引其实是一种数据结构,能够帮助我们快速的检索数据库中的数据。

二:索引具体采用的哪种数据结构

常见的MySQL主要有两种结构:Hash索引和B+ Tree索引,默认的是InnoDB引擎,默认的是B+树

三:B+ 树和hash索引比起来有什么优缺点?

因为Hash索引底层是哈希表,哈希表是一种以key-value存储数据的结构,所以多个数据在存储关系上是完全没有任何顺序关系的,所以,对于区间查询是无法直接通过索引查询的,就需要全表扫描。所以,哈希索引只适用于等值查询的场景。而B+ 树是一种多路平衡查询树,所以他的节点是天然有序的(左子节点小于父节点、父节点小于右子节点),所以对于范围查询的时候不需要做全表扫描。
哈希索引适合等值查询,但是无法进行范围查询,哈希索引没办法利用索引完成排序,哈希索引不支持多列联合索引的最左匹配规则,如果有大量重复键值的情况下,哈希索引的效率会很低,因为存在哈希碰撞问题

四:聚簇索引和非聚簇索引,在查询数据的时候有区别吗?

InnoDB 主键使用的是聚簇索引,MyISAM 不管是主键索引,还是二级索引使用的都是非聚簇索引。

聚簇索引查询会更快,因为主键索引树的叶子节点直接就是我们要查询的整行数据了。而非主键索引的叶子节点是主键的值,查到主键的值以后,还需要再通过主键的值再进行一次查询

五:什么是覆盖索引?

覆盖索引(covering index)指一个查询语句的执行只用从索引中就能够取得,不必从数据表中读取。也可以称之为实现了索引覆盖。

六:什么是最左匹配原则的?

在mysql建立联合索引时会遵循最左前缀匹配的原则,即最左优先,在检索数据时从联合索引的最左边开始匹配。

七:什么时候索引会失效?

当语句中带有or的时候 即使有索引也会失效。
当语句索引 like 带%的时候索引失效
如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
使用函数

八:主从复制是什么?

mysql的主从复制是一个异步的复制过程(但一般情况下感觉是实时同步的),数据库数据从一个mysql数据库(我们称之为master)复制到另一个mysql数据库(我们称之为slave)。在master与slave之间实现整个主从复制的过程是由三个线程参与完成的。其中有两个线程(SQL线程和IO线程)在slave端,另外一个线程(IO线程)在master端。

九:MySQL 主从复制主要用途

读写分离
数据实时备份,当系统中某个节点发生故障时,可以方便的故障切换
架构扩展
架构的扩展

十:复制的基本原则

每个Slave只有一个Master
每个Slave只能有一个唯一的服务ID
每个Master可以有多个Slave

你可能感兴趣的:(MySQL)