Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2793203
  • 博文数量: 471
  • 博客积分: 7081
  • 博客等级: 少将
  • 技术积分: 5369
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-04 21:55
文章分类

全部博文(471)

文章存档

2014年(90)

2013年(69)

2012年(312)

分类: Mysql/postgreSQL

2012-03-22 09:57:17

性能优化是通过某些有效的方法提高MySQL数据库的性能。性能优化的目的是为了使MySQL数据库运行速度更快、占用的磁盘空间更小。性能优化包括很多方面,例如优化查询速度、优化更新速度和优化MySQL服务器等。

优化查询;

优化数据库结构;

优化MySQL服务器。

 

18.2 优化查询
18.2.1  分析查询语句
     通过对查询语句的分析,可以了解查询语句的执行情况。MySQL中,可以使用EXPLAIN语句和DESCRIBE语句来分析查询语句。
     EXPLAIN语句的基本语法如下:
     EXPLAIN SELECT语句 ;
     通过EXPLAIN关键字可以分析后面的SELECT语句的执行情况。并且能够分析出所查询的表的一些内容。
18.2.2  索引对查询速度的影响
     索引可以快速的定位表中的某条记录。使用索引可以提高数据库查询的速度,从而提高数据库的性能。本小节将为读者介绍索引对查询速度影响。
     如果查询时不使用索引,查询语句将查询表中的所有字段。这样查询的速度会很慢。如果使用索引进行查询,查询语句只查询索引字段。这样可以减少查询的记录数,达到提高查询速度的目的。
18.2.3  使用索引查询
     索引可以提高查询的速度。但是有些时候即使查询时使用的是索引,但索引并没有起作用。本小节将向读者介绍索引的使用。
     1.查询语句中使用LIKE关键字
     2.查询语句中使用多列索引
     3.查询语句中使用OR关键字
18.2.4  优化子查询
      很多查询中需要使用子查询。子查询可以使查询语句很灵活,但子查询的执行效率不高。子查询时,MySQL需要为内层查询语句的查询结果建立一个临时表。然后外层查询语句再临时表中查询记录。查询完毕后,MySQL需要撤销这些临时表。因此,子查询的速度会受到一定的影响。如果查询的数据量比较大,这种影响就会随之增大。在MySQL中可以使用连接查询来替代子查询。连接查询不需要建立临时表,其速度比子查询要快。

 

18.3  优化数据库结构
   数据库结构是否合理,需要考虑是否存在冗余、对表的查询和更新的速度、表中字段的数据类型是否合理等多方面的内容。本节将为读者介绍优化数据库结构的方法。

18.3.1  将字段很多的表分解成多个表
   有些表在设计时设置了很多的字段。这个表中有些字段的使用频率很低。当这个表的数据量很大时,查询数据的速度就会很慢。本小节将为读者介绍优化这种表的方法。对于这种字段特别多且有些字段的使用频率很低的表,可以将其分解成多个表。

18.3.2  增加中间表
   有时候需要经常查询某两个表中的几个字段。如果经常进行联表查询,会降低MySQL数据库的查询速度。对于这种情况,可以建立中间表来提高查询速度。本小节将为读者介绍增加中间表的方法。
先分析经常需要同时查询哪几个表中的哪些字段。然后将这些字段建立一个中间表,并从原来那几个表将数据插入到中间表中。之后就可以使用中间表来进行查询和统计了。


18.3.3  增加冗余字段
设计数据库表的时候尽量让表达到三范式。但是,有时候为了提高查询速度,可以有意识的在表中增加冗余字段。本小节将为读者介绍通过增加

冗余字段来提高查询速度的方法。
表的规范化程度越高,表与表之间的关系就越多。查询时可能经常需要多个表之间进行连接查询。而进行连接操作会降低查询速度。例如,学生

的信息存储在student表中,院系信息存储在department表中。通过student表中的dept_id字段与department表建立关联关系。如果要查询一个

学生所在系的名称,必须从student表中查找学生所在院系的编号(dept_id),然后根据这个编号去department查找系的名称。如果经常需要进

行这个操作时,连接查询会浪费很多的时间。因此可以在student表中增加一个冗余字段dept_name,该字段用来存储学生所在院系的名称。这样

就不用每次都进行连接操作了。

18.3.4  优化插入记录的速度
插入记录时,索引、惟一性校验都会影响到插入记录的速度。而且,一次插入多条记录和多次插入记录所耗费的时间是不一样的。根据这些情况,分别进行不同的优化。本小节将为读者介绍优化插入记录的速度的方法。
1.禁用索引
2.禁用惟一性检查
3.优化INSERT语句

 

18.4  优化MySQL服务器
优化MySQL服务器可以从两个方面来理解。一个是从硬件方面来进行优化。另一个是从MySQL服务的参数进行优化。通过这些优化方式,可以提供MySQL的运行速度。但是这部分的内容很难理解,一般只有专业的数据库管理员才能进行这一类的优化。本小节将为读者介绍优化MySQL服务器的方法。

阅读(581) | 评论(0) | 转发(0) |
0

上一篇:mysql 游标

下一篇:mysql 的三种循环方法

给主人留下些什么吧!~~