优化MySQL数据库查询的三种方法简介

lszjzd

lszjzd

2016-01-29 14:53

优化MySQL数据库查询的三种方法简介,优化MySQL数据库查询的三种方法简介

在优化查询中,数据库应用(如MySQL)即意味着对工具的操作与使用。使用索引、使用EXPLAIN分析查询以及调整MySQL的内部配置可达到优化查询的目的。

任何一位数据库程序员都会有这样的体会:高通信量的数据库驱动程序中,一条糟糕的SQL查询语句可对整个应用程序的运行产生严重的影响,其不仅消耗掉更多的数据库时间,且它将对其他应用组件产生影响。

如同其它学科,优化查询性能很大程度上决定于开发者的直觉。幸运的是,像MySQL这样的数据库自带有一些协助工具。本文简要讨论诸多工具之三种:使用索引,使用EXPLAIN分析查询以及调整MySQL的内部配置。

1、使用索引

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/mysql/)

MySQL允许对数据库表进行索引,以此能迅速查找记录,而无需一开始就扫描整个表,由此显著地加快查询速度。每个表最多可以做到16个索引,此外MySQL还支持多列索引及全文检索。

给表添加一个索引非常简单,只需调用一个CREATE INDEX命令并为索引指定它的域即可。列表A给出了一个例子:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/mysql/)

mysql CREATE INDEX idx_username ON users(username);Query OK, 1 row affected (0.15 sec)Records: 1  Duplicates: 0  Warnings: 0

列表 A

这里,对users表的username域做索引,以确保在WHERE或者HAVING子句中引用这一域的SELECT查询语句运行速度比没有添加索引时要快。通过SHOW INDEX命令可以查看索引已被创建(列表B)。

列表 B

值得注意的是:索引就像一把双刃剑。对表的每一域做索引通常没有必要,且很可能导致运行速度减慢,因为向表中插入或修改数据时,MySQL不得不每次都为这些额外的工作重新建立索引。另一方面,避免对表的每一域做索引同样不是一个非常好的主意,因为在提高插入记录的速度时,导致查询操作的速度减慢。这就需要找到一个平衡点,比如在设计索引系统时,考虑表的主要功能(数据修复及编辑)不失为一种明智的选择。

2、优化查询性能

在分析查询性能时,考虑EXPLAIN关键字同样很管用。EXPLAIN关键字一般放在SELECT查询语句的前面,用于描述MySQL如何执行查询操作、以及MySQL成功返回结果集需要执行的行数。下面的一个简单例子可以说明(列表C)这一过程:

列表 C

这里查询是基于两个表连接。EXPLAIN关键字描述了MySQL是如何处理连接这两个表。必须清楚的是,当前设计要求MySQL处理的是country表中的一条记录以及city表中的整个4019条记录。这就意味着,还可使用其他的优化技巧改进其查询方法。例如,给city表添加如下索引(列表D):

mysql CREATE INDEX idx_ccode ON city(countrycode);Query OK, 4079 rows affected (0.15 sec)Records: 4079  Duplicates: 0  Warnings: 0

列表 D

现在,当我们重新使用EXPLAIN关键字进行查询时,我们可以看到一个显著的改进(列表E):

展开更多 50%)
分享

猜你喜欢

优化MySQL数据库查询的三种方法简介

MySQL mysql数据库
优化MySQL数据库查询的三种方法简介

php 读取mysql数据库三种方法

编程语言 网络编程
php 读取mysql数据库三种方法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

mysql数据库查询优化 mysql效率

编程语言 网络编程
mysql数据库查询优化 mysql效率

php访问查询mysql数据的三种方法

PHP
php访问查询mysql数据的三种方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

MySQL数据库优化(三)

编程语言 网络编程
MySQL数据库优化(三)

MySQL数据库索引查询优化的分享

编程语言 网络编程
MySQL数据库索引查询优化的分享

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

教你用Myisamchk进行崩溃恢复MySQL

教你用Myisamchk进行崩溃恢复MySQL

《胡莱三国》武将技能搭配心得

《胡莱三国》武将技能搭配心得
下拉加载更多内容 ↓