mysql 查询速度优化

原创 2011年01月12日 15:38:00

1. 当只要一行数据时使用 LIMIT 1

      当你查询表的有些时候,你已经知道结果只会有一条结果,但因为你可能需要去fetch游标,或是你也许会去检查返回的记录数。在这种情况下,加上 LIMIT 1 可以增加性能。这样一样,MySQL数据库引擎会在找到一条数据后停止搜索,而不是继续往后查少下一条符合记录的数据。  

 

2, EXPLAIN   SELECT 查询用来跟踪查看效果

 

   使用 EXPLAIN 关键字可以让你知道MySQL是如何处理你的SQL语句的。这可以帮你分析你的查询语句或是表结构的性能瓶颈。EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据表是如何被搜索和排序的……等等,等等。 

 

3. 避免 SELECT *

    从数据库里读出越多的数据,那么查询就会变得越慢。并且,如果你的数据库服务器和WEB服务器是两台独立的服务器的话,这还会增加网络传输的负载。

 

 

4. 拆分大的 DELETE INSERT 语句

    如果你需要在一个在线的网站上去执行一个大的 DELETE INSERT 查询,你需要非常小心,要避免你的操作让你的整个网站停止相应。因为这两个操作是会锁表的,表一锁住了,别的操作都进不来了。Apache 会有很多的子进程或线程。所以,其工作起来相当有效率,而我们的服务器也不希望有太多的子进程,线程和数据库链接,这是极大的占服务器资源的事情,尤其是内存。 

如果你把你的表锁上一段时间,比如30秒钟,那么对于一个有很高访问量的站点来说,这30秒所积累的访问进程/线程,数据库链接,打开的文件数,可能不仅仅会让你泊WEB服务Crash,还可能会让你的整台服务器马上掛了。所以,如果你有一个大的处理,你定你一定把其拆分,使用 LIMIT 条件是一个好的方法。下面是一个示例:

18

 

01 while (1) { 

 

02     //每次只做1000 

 

03     mysql_query("DELETE FROM logs WHERE log_date <= '2009-11-01' LIMIT 1000"); 

 

04     if (mysql_affected_rows() == 0) { 

 

05         // 没得可删了,退出! 

 

06         break; 

 

07     } 

 

08     // 每次都要休息一会儿 

 

09     usleep(50000); 

 

10 }

 

4,MySQL查询可以启用高速查询缓存。这是提高数据库性能的有效Mysql优化方法之一。当同一个查询被执行多次时,从缓存中提取数据和直接从数据库中返回数据快很多,

 

5,使用连接(join)来代替子查询
     SELECT * FROM customerinfo
     WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )
     用下面来替换:
     SELECT * FROM customerinfo
     LEFT JOIN salesinfo ON customerinfo.CustomerID=salesinfo.CustomerID
     WHERE salesinfo.CustomerID IS NULL

 

 

 

mysql千万级数据量根据索引优化查询速度

(一)索引的作用 索引通俗来讲就相当于书的目录,当我们根据条件查询的时候,没有索引,便需要全表扫描,数据量少还可以,一旦数据量超过百万甚至千万,一条查询sql执行往往需要几十秒甚至更多,5秒以上就已经...
  • qq_33556185
  • qq_33556185
  • 2016年08月15日 18:05
  • 22646

MySQL如何优化查询速度

1、应尽量避免在 where 子句中使用!=或操作符,否则将引擎放弃使用索引而进行全表扫描。2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。...
  • saizo123
  • saizo123
  • 2016年11月08日 16:57
  • 195

mysql千万级大数据SQL查询优化

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎...
  • u014421556
  • u014421556
  • 2016年07月29日 13:27
  • 33910

MySQL 影响SQL查询速度

查询速度为什么会慢SQL请求处理步骤 客户端发送SQL请求给MySQL服务器 MySQL服务器会在查询缓存中进行检查,查看是否可以在查询缓存中命中 服务端会对SQL进行解析、预处理再由优化器生成对应的...
  • lifelong_learning
  • lifelong_learning
  • 2017年08月08日 15:57
  • 402

mysql千万级数据量根据(索引)优化查询速度

转自:http://blog.csdn.net/qq_33556185/article/details/52192551 (一)索引的作用 索引通俗来讲就相当于书的目录,当我们根据条件查询...
  • q549244663
  • q549244663
  • 2017年03月04日 11:35
  • 2070

[经验之谈]数据库查询速度优化之解决技巧

摘要 在上篇文章漫谈数据库查询速度优化方案我们讲到了,数据优化的几种方案,现在这篇文章,我们就实际来看看,如何实际到具体的操作上.也就是我们在写数据时我们应该注意些什么. 1、对查询进行优化,应尽...
  • BaiHuaXiu123
  • BaiHuaXiu123
  • 2016年09月11日 13:11
  • 4770

如何提高MySQL查询速度

1、选取最适用的字段属性 MySQL 可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽...
  • allen_fan_11
  • allen_fan_11
  • 2013年10月29日 20:37
  • 1771

sql查询优化,项目中遇到的not in优化

在项目中写了一个查询语句,一个表的字段不包含在另一张表中有哪些。 语句如下: select distinct a.parentcorrelation, a.sendtime from compla...
  • huoyunshen88
  • huoyunshen88
  • 2013年01月25日 16:23
  • 2935

关于mysql处理百万级以上的数据时如何提高其查询速度的方法

原文:http://www.2cto.com/database/201306/222839.html 最近一段时间由于工作需要,开始关注针对Mysql数据库的select查询语句的相关优化方法。...
  • u013810758
  • u013810758
  • 2014年06月16日 14:28
  • 4894

mysql查询速度优化方法

1、应尽量避免在 where 子句中使用!=或 2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 3、应尽量避免在 where 子句...
  • rubyniurui
  • rubyniurui
  • 2017年03月08日 09:38
  • 73
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql 查询速度优化
举报原因:
原因补充:

(最多只允许输入30个字)