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 复杂查询或者简单查询:
设计查询时,考虑是否需要将一个复杂的查询分成多个简单的查询。相关文章推荐
- mysql 基本语法 速成
- RDS MySQL 连接数满情况的处理
- CenoOS下如何对mysql编码进行配置
- MySQL、PostgreSQL、Ingres r3、MaxDB等开源数据库的详细比较
- mysql性能测试工具mysqlslap
- mysql命令汇总,持续更新中……
- Mysql查看版本号的五种方式介绍
- mysql表修改
- mysql表修改
- MySQL中UPDATE语句使用的实例教程
- 不停止 MySQL 服务增加从库的两种方式
- 【leetcode】Combine Two Tables (MySQL)
- mysql中if-elesif-endif使用
- mysql权限问题
- Mysql 索引案例学习
- ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
- mysql的初识--DOS下的简单命令
- mysql自增长id归零
- 1、MySQL单双实例安装
- Mysql:2.创建/删除Mysql数据库