MySQL查询性能优化

1. 索引:

首先在索引中找到对应值,然后根据匹配的索引记录找到对应的数据行。
如果索引包含多个列,那么列的顺序十分重要,因为MySQL只能高效的使用索引的最左前缀列。在MySQL中,索引是在存储引擎层而不是服务器层实现的。

1.1 索引的类型:

1. B-Tree索引:
大多数索引都是这个类型的。索引可以用于按值查找,也可以用于查询中的Order By操作。

2. 哈希索引:哈希索引基于哈希表实现,只有精确匹配索引所有列的查询才有效

前缀索引:
mysql> CREATE TABLE city_demo(city VARCHAR(50) NOT NULL);
mysql> ALTER TABLE city_demo ADD KEY(city(7));
以city字段的前7个字符作为前缀,创建索引。



1 .查询性能低下最基本的原因是访问的数据太多。某些查询可能不可避免地需要筛选大量数据。

2. 简单衡量查询开销的三个指标如下:

响应时间;

扫描的行数;

返回的行数。

这三个指标会记录到Mysql的慢日志中。


响应时间: 服务时间+排队时间。服务时间是数据库处理这个查询花费的时间。排队时间是等待的时间,主要是I/O等待和锁等待。

在EXPLAIN语句中的type列反应了访问类型,访问类型有多种:全表扫描、索引扫描、范围扫描、唯一索引扫描、常数引用等。索引让MySQL以最高效、扫描函数最少的方式找到需要的记录。

mysql> explain select * from  film_actor \G

2. 重构查询的方式:

2.1 复杂查询或者简单查询:

设计查询时,考虑是否需要将一个复杂的查询分成多个简单的查询。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值