索引
对与大量的数据,我们需要快速查询出来。 就需要为了提高mysql查询效率的一种数据结构。
2. 索引的优点和缺点:
优点: 查询效率快。 缺点: 索引本身也是一个表页需要占用空间。不
适合更新操作。
3. 索引的数据结构: b+tree和hash表。
4. b+tree的特点:
根节点的最大值是B+tree的最大值。
中间节点不存在卫星数据。可以存储更多的元素。使得b+tree更矮
胖。减少了io的次数
所有卫星数据都存放在叶子节点,查询稳定性高。
叶子节点用链表连接 便于范围查询。
5. 聚焦索引和非聚焦索引。
1.聚焦索引: 所有的叶子节点存放的是卫星数据。
非聚焦索引: 所有的叶子节点存放的是卫星数据的指针。
6. 索引的分类:
单值索引
唯一索引
复合索引
7. 最左前缀法则
在建立索引时,尽量将经常需要查询的字段放在第一个。
mysql中的存储存储引擎的种类以及区别
(1)可查看mysql中目前拥有的存储引擎。
show engines
(2) 我们使用常见的引擎; InnoDB和MyISAM.
(3)我们的存储引擎作用在表上。而不是作用在数据库上。
innodb: 支持事务和外键以及存储的方式有两个文件。
myisam: 不支持事务和外键,存储方式是有三个文件。
sql优化的步骤
(1) 定位到查询慢的sql.有两种方式。
-- 1. 开启慢查询日志。设置一个超时的阈值,当执行的sql超过这个阈值
后,则会记录到日志中。可以使用tail命令查看日志文件中指定的后n行数
据。
放在mysql的配置文件 my.cnf [linux] my.ini[window]
# 该参数用来控制慢查询日志是否开启, 可取值: 1 和 0 , 1 代表开
启, 0 代表关闭
slow_query_log=1
# 该参数用来指定慢查询日志的文件名
slow_query_log_file=slow_query.log
# 该选项用来配置查询的时间限制, 超过这个时间将认为值慢查询, 将
需要进行日志记录, 默认10s
long_query_time=1
2. show processlist: 实时监控。
分析sql的执行计划。
explain sql语句。 explain(解释)