您的位置:首页 > 数据库 > MySQL

MySQL查询性能优化

2015-11-26 10:52 453 查看

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 复杂查询或者简单查询:

设计查询时,考虑是否需要将一个复杂的查询分成多个简单的查询。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: