当前位置:  数据库>mysql

优化MySQL数据库中的查询语句详解

    来源: 互联网  发布时间:2014-10-16

    本文导语:  很多时候基于php+MySQL建立的网站所出现的系统性能瓶颈往往是出在MySQL上,而MySQL中用的最多的语句就是查询语句,因此,针对MySQL数据库查询语句的优化就显得至关重要!本文就此问题做出详细分析如下: 1、判断是否向MySQL数...

很多时候基于php+MySQL建立的网站所出现的系统性能瓶颈往往是出在MySQL上,而MySQL中用的最多的语句就是查询语句,因此,针对MySQL数据库查询语句的优化就显得至关重要!本文就此问题做出详细分析如下:

1、判断是否向MySQL数据库请求了不需要的数据,如下列情况:

(1)、查询不需要的数据,例如你需要10条数据,但是你选出了100条数据加了limit做限制。
(2)、多表关联时返回全部列
(3)、总是取出全部列select*......取出全部列,会让优化器无法完成索引覆盖扫描这类优化,还为服务器带来额外的I/O、内存、和cpu的消耗
(4)、重复查询相同的数据例如,在用户评论的地方需要查询用户的头像的URL,那么用户多次评论的时候将这个数据缓存起来,需要的时候从缓存取出,这样性能会更好。

2、mysql是否在扫描额外的记录

最简单衡量查询开销的三个指标如下:响应时间、扫描的行数、返回的行数

响应时间:服务时间和排队时间。服务时间是指数据库处理这个查询真正花费的时间。排队时间是指服务器因为等待某些资源而没有真正执行的查询。

扫描的行数和返回的行数:理想情况下扫描的行数和返回的行数应该是相同的。

一般MYSQL能够使用如下三种方式应用where条件记录,从好到坏依次为:

(1)、在索引中使用where条件来过滤不匹配的记录,在存储索引层完成。

(2)、使用索引覆盖扫描来返回记录,直接从索引中过滤不需要的记录并返回命中的结果,在mysql服务器层完成,但无需在回表查询记录。

(3)、从数据表中返回数据,然后过滤不满足条件的记录,在mysql服务器层完成,需要先从数据表读出记录然后过滤

如果发现查询需要扫描大量的数据但返回少数的行,那么通常可以尝试下面的技巧:

(1)、使用索引覆盖扫描,把所有需要的列都放到索引中,这样存储引擎无须返回表获取对应行就可以返回结果了。

(2)、改变库表结构,使用单独的汇总表。

(3)、重写这个复杂的查询

3、重构查询的方式

(1)、一个复杂查询还是多个简单查询:

Mysql内部每秒能够扫描内存中上百万条数据,相比之下,mysql响应数据给客户端就慢得多,在其他条件都相同的时候,使用尽可能少的查询当然是好的,但有时候将一个大查询分解为多个小查询都是很有必要的。

(2)、切分查询:

删除旧数据是一个很好的例子,在定期清除大量数据时,如果用一个大的语句一次性完成的话,则可能一次锁住很多数据,占满整个事物日志。耗尽系统资源,阻塞很多小的但很重要的查询。

Mysql>deletefrommessageswherecreated

    
 
 

您可能感兴趣的文章:

  • 急,来者有分,怎样对程序中的SQL语句进行优化
  • sql语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句
  • ”整型变量j说明为volatile,这样就阻止了优化程序除去循环语句“ 这么理解这句话,为什么会除去循环语句?
  • MySQL对limit查询语句的优化方法
  • MySQL SQL语句优化的10条建议
  • 通过分析SQL语句的执行计划优化SQL
  • SQL SERVER 的SQL语句优化方式小结
  • MySQL Order by 语句用法与优化详解
  • MySQL查询优化:连接查询排序limit(join、order by、limit语句)介绍
  • MySQL 大数据量快速插入方法和语句优化分享
  • insert语句太长用StringBuilder优化一下
  • MYSQL WHERE语句优化
  • MySQL 通过索引优化含ORDER BY的语句
  • Sql Server 索引使用情况及优化的相关Sql语句分享
  • mysql优化limit查询语句的5个方法
  • 浅谈MySQL中优化sql语句查询常用的30种方法
  • SQL 语句优化方法30例
  • SQL语句优化方法30例(推荐)
  • SQLServer 优化SQL语句 in 和not in的替代方案
  • oracle下一条SQL语句的优化过程(比较详细)
  • 深入mysql并发插入优化详解
  • 深入C# 内存管理以及优化的方法详解
  • 解析Android开发优化之:对界面UI的优化详解(三)
  • MySQL查询优化之索引的应用详解
  • 解析Android开发优化之:对界面UI的优化详解(二)
  • Jquery性能优化详解
  • 关于MYSQL的优化全面详解
  • MySQL查询优化--调整内部变量的详解
  • php-fpm优化方法详解
  • 详解mysql的limit经典用法及优化实例
  • Unix环境下Oracle数据库完全优化详解
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教:JSP中分页显示数据库内容的优化算法?
  • 数据库优化工具 GXDatabaseUtils
  • Linux下Oracle数据库优化的具体过程
  • 数据库性能优化二:数据库表优化提升性能
  • 数据库性能优化三:程序操作优化提升性能
  • 请问:如何提高查询的效率和优化数据库
  • Oracle数据库在NT平台下的系统优化思路与策略
  • 数据库中identity字段不必是系统产生的唯一值 性能优化方法(新招)
  • mysql 数据库中my.ini的优化 2G内存针对站多 抗压型的设置
  • SQL Server数据库的高性能优化经验总结
  • IT科技资讯 iis7站长之家
  • Oracle数据库业务优化心得分享
  • 在Linux操作系统下优化Oracle数据库的具体步骤
  • MySQL 联合索引与Where子句的优化 提高数据库运行效率
  • 优化Mysql数据库的8个方法
  • Oracle 数据库优化实战心得总结
  • mysql数据库sql优化原则(经验总结)
  • MySQL 数据库优化的具体方法说明
  • Oracle数据库及应用程序优化开发者网络Oracle
  • Codeigniter操作数据库表的优化写法总结
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • mysql优化之路----hash索引优化
  • Windows优化大师最新版 V7.99 Build 12.604发布
  • GCC的O1、O2、O3选项究竟优化了什么?
  • Mysql大表查询优化技巧总结及案例分析
  • MySQL优化分析器 mysqloa
  • JPEG 图像优化工具 jpegoptim
  • 图片优化工具 ImageOptim
  • 一个编译优化问题
  • gcc 优化
  • SPICE 电路优化 ASCO




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3