MySQL查询的性能优化

2008-02-23 07:36:25来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  查询是数据库技术中最常用的操作。查询操作的过程比较简单,首先从客户端发出查询的SQL语句,数据库服务端在接收到由客户端发来的SQL语句后,执行这条SQL语句,然后将查询到的结果返回给客户端。虽然过程很简单,但不同的查询方式和数据库配置,对查询的性能将会有很在的影响。因此,本文就在MySQL中常用的查询优化技术进行讨论。讨论的内容如:

   通过查询缓冲提高查询速度

   MySQL对查询的自动优化

   基于索引的排序

   不可达查询的检测

   使用各种查询选择来提高性能

  一、 通过查询缓冲提高查询速度

  一般我们使用SQL语句进行查询时,数据库服务器每次在收到客户端发来SQL后,都会执行这条SQL语句。但当在一定间隔内(如1分钟内),接到完全相同的SQL语句,也同样执行他。虽然这样能够确保数据的实时性,但在大多数时候,数据并不需要完全的实时,也就是说能够有一定的延时。假如是这样的话,在短时间内执行完全相同的SQL就有些得不偿失。

  幸好MySQL为我们提供了查询缓冲的功能(只能在MySQL 4.0.1及以上版本使用查询缓冲)。我们能够通过查询缓冲在一定程度上提高查询性能。

  我们能够通过在MySQL安装目录中的my.ini文档配置查询缓冲。配置也很简单,只需要将query_cache_type设为1即可。在配置了这个属性后,MySQL在执行任何SELECT语句之前,都会在他的缓冲区中查询是否在相同的SELECT语句被执行过,假如有,并且执行结果没有过期,那么就直接取查询结果返回给客户端。但在写SQL语句时注意,MySQL的查询缓冲是区分大小写的。如下列的两条SELECT语句:

SELECT * from TABLE1
SELECT * FROM TABLE1

  上面的两条SQL语句对于查询缓冲是完全不同的SELECT。而且查询缓冲并不自动处理空格,因此,在写SQL语句时,应尽量减少空格的使用,尤其是在SQL首和尾的空格(因为,查询缓冲并不自动截取首尾空格)。

  虽然不配置查询缓冲,有时可能带来性能上的损失,但有一些SQL语句需要实时地查询数据,或并不经常使用(可能一天就执行一两次)。这样就需要把缓冲关了。当然,这能够通过配置query_cache_type的值来关闭查询缓冲,但这就将查询缓冲永久地关闭了。在MySQL 5.0中提供了一种能够临时关闭查询缓冲的方法:

SELECT SQL_NO_CACHE field1, field2 FROM TABLE1

  以上的SQL语句由于使用了SQL_NO_CACHE,因此,不管这条SQL语句是否被执行过,服务器都不会在缓冲区中查找,每次都会执行他。

  我们还能够将my.ini中的query_cache_type设成2,这样只有在使用了SQL_CACHE后,才使用查询缓冲。

SELECT SQL_CALHE * FROM TABLE1
共3页。 1 2 3 :

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 如何安装并测试MySQL

下一篇: 通用SQL数据库查询语句精华使用简介