如何将你的MySQL查询速度提升300倍

在进行性能分析前,需要先定位耗时查询。

MySQL提供了内建的耗时查询日志。使用前,打开my.cnf文件,将slow_query_log设置为"On"。
同时将long_query_time设置为一个对一次查询来说比较慢的时间(秒数),比如0.2。slow_query_log_file设置为你想保存日志文件的路径。然后运行代码,执行时间超过设定上限的查询将会被记录到日志中。

一旦定位这些烦人的查询,就可以探究慢的原因。MySQL提供了EXPLAIN关键字。可以与SELECT、DELETE、INSERT、REPLACE、UPDATE语句一起使用。只需要如下一样添加到查询开始处:


  1. EXPLAIN SELECT picture.id, picture.title 
  2. 
FROM picture 
  3. 
LEFT JOIN album ON picture.album_id = album.id
WHERE album.user_id = 1; 

结果是对数据访问过程的解析。每行代表一个查询相关的数据表:

重点是表名、使用的key、查询执行时所扫描的行数。

这个查询扫描了picture表2百万行,对每个picture记录扫描了album表2万行。意味着,该查询实际扫描了album表400亿行。这个过程可以更高效。

索引

使用索引,可以极大提升性能。比如地址簿中的名字。找一个名字,你可以从头翻到尾,也可以找到相应的字符标签页来快速定位。

使用索引可以避免无必要的表扫描。比如在picture.album_id上添加索引:


  1. ALTER TABLE picture ADD INDEX(album_id); 

现在执行查询,就不会扫描整个picture列表了。首先,所有的album表会被扫描以找到属于该用户的album,然后,使用album_id列索引快速定位对应的picture。扫描的行数减少到了20万,比原始查询快了317倍。

按照以下方式添加索引可以确保两张表都能使用对应键:


  1. ALTER TABLE album ADD INDEX(user_id); 

这次,album表不会被全部扫描,通过user_id键就可以精确定位相应的album。然后这100个album被扫描后,通过album_id键相关的picture也可以快速找到。每张表都用到了一个键进行查询性能优化,结果比原始查询快了380倍。

但是并不意味着可以随意添加索引,因为索引会导致写数据库用时增长。所以使用索引导致读用时缩短,写用时增长。因此,如果能提升读性能时再添加索引。使用EXPLAIN来确认索引是否被查询用到,没有就删除。

作者:佚名

来源:51CTO

时间: 2024-09-18 19:07:57

如何将你的MySQL查询速度提升300倍的相关文章

WPS Office抢鲜版V8.0发布 素材库速度提升5倍

日前,金山办公软件正式发布了WPS Office抢鲜版V8.0,该版本新品秉承了WPS Office 2012灵巧轻快.便捷安装,深度兼容微软Office的特点,可以轻松在时尚界面与经典界面之间一键切换.另外,WPS Office 抢鲜版V8.0对在线素材库进行了改进,使素材库的速度较之前提升5倍,同时段落布局的使用也更加方便,还支持页面颜色的更换,颜色.纹理.图案想怎么来就怎么来,让用户的办公操作更加简单轻松. 网友可登陆WPS官网(http://www.wps.cn/product/beta

摩根大通服务器加入GPU速度提升40倍

新浪科技讯 北京时间8月5日下午消息,摩根大通与英伟达周四共同展示了在服务器中增加GPU的好处. 投资银行是最看重计算速度的行业之一,虽然这些企业以往都对如何提高服务器性能讳莫如深,但摩根大通本次却对外披露了一些信息. GPU又称图形处理器,以前主要被用于渲染游戏中的华丽图形.虽然英特尔和AMD出品的x86 CPU仍然占据主导,但GPU却更加擅长一些特殊的任务. 英伟达的GPU已经被整合到摩根大通的服务器中,其作用是充当x86处理器的加速器.这两家公司表示,通过这种方式,在执行某些任务时,峰值性

老牌破解神器L0phtCrack强势回归 口令破解速度提升500倍

7年了,随着完全改版的第7版发布,Windows系统下老牌著名破解器L0phtCrack终于强势回归. 该口令破解器首次发布是在19年前,当时迅速风靡黑客圈,并导致微软不得不改变其处理口令安全的方式.但自2009年,在世界上第一个将安全与培训集中在一起的会议--波士顿Source大会上发布了第6版以来,该破解器再无新版本发布. 最新发布的第7版,采用可利用现代多核CPU和GPU(图形处理器)的全新破解引擎,将四核CPU的破解耗时急速缩短到不到前版的1/5.但是,装载 AMD Radeon Pro

AMD 向 LibreOffice 贡献 GPU 代码 电子表格速度提升500倍

AMD称它是开源项目的真正信徒,它的工程师向多个开源项目贡献了代码,其中一个项目就是知名的开源办公软件LibreOffice.办公软件的电子表格 涉及到大量数学运算,而GPU在执行通用计算方面的效率要远高于CPU.如果软件能利用GPU去加速计算,将能大大提升速度. AMD的工程师向 LibreOffice项目贡献利用GPU的OpenCL内核.测试显示,在启用GPU加速之后,电子表格计算速度提升了超过500倍:0.25秒对2分21秒. 文章转载自 开源中国社区 [http://www.oschin

韩国SK电信启动4G服务数据传输速度提升4倍

新浪科技讯 北京时间9月30日早间消息,韩国SK电信9月28日正式推出了基于LTE(长期演进)技术的4G移动网络服务.SK电信同时表示,今年将推出7款支持LTE的手机,以及一款支持LTE的平板电脑. SK电信表示,高清影像是LTE时代的核心竞争力.与3G智能手机相比,LTE智能手机的视频通话清晰度将提高7倍,而数据传输速度则将提升4倍以上. 为了部署速度更快的LTE网络,SK电信将从下月开始使网络带宽从5MHz提高到10MHz,增加一倍.SK电信一位人士在28日的发布会上表示,计划到今年底吸引5

LinkedIn用Node替代Rails:减少了27台服务器 速度提升20倍

Ryan http://www.aliyun.com/zixun/aggregation/13830.html">Paul写过一篇<深入观察LinkedIn移动端的设计>,在其中我们看到:有23%的移动用户:专注朴素.易用以及可靠性:30%原生代码,70%使用HTML:嵌入轻量的HTTP服务:单一的客户端应用链接云服务器:后端服务从Rails转换到Node.js. 曾经在LinkedIn工作的工程师蓝奕凯补充道:移动促使产生了跨数据中心应用.运行在单线程的Rails服务器上(每

路由器将迎重磅升级 WiFi速度提升3倍

研究人员近期提出了一个新型WiFi系统,即使在拥塞的网络中,它也将大幅提升数据传输速度. 这个新型系统被称为MegaMIMO 2.0,它能够以高于目前WiFi三倍的速度进行无线数据传输,并且信号范围也被提升为两倍. MegaMIMO 2.0是由来自于麻省理工学院计算机科学以及人工智能实验室(CSAIL)的团队自主研发的.如果设备制造商如思科(Cisco).美国网件公司(Netgear)能在他们的产品中使用这个系统,那么我们就能够轻松地通过家用路由器体验到它的高速啦! 不过,只有当成百上千人需要同

美研制新结构电极:电池充电速度提升16倍

美国加州大学河滨分校伯恩斯工程学院两位研究人员Mihri和Cengiz Ozkan.新浪科技讯 北京时间6月19日消息,据国外媒体报道,美国加州大学河滨分校伯恩斯工程学院科研人员近日研制出一种用硅材料装饰的锥形碳纳米管立体集成结构,用于锂离子电池电极之上,该结构可以将便携式电子设备的充电时间从数小时缩短到十分钟之内.锂离子电池是一种用于便携式电子设备或电动交通工具之上的可充电电池.但是,这种电池目前仍然存在一些问题.电动交通工具所携带的电池的重量往往占了整个车身重量的很大比例,而便携式电子设备上

蓝牙5.0瞄准物联网, 速度提升一倍, 距离增大三倍

Bluetooth的标准组织Bluetooth Special Interest Group(Bluetooth SIG)指出, Bluetooth 5将在现有蓝牙标准上做极大的提升. 提供比现有低功耗蓝牙标准两倍的数据传输率以及4倍的有效距离. 这也就意味着蓝牙设备将能够在40米左右的距离内连接. Bluetooth SIG同时声称, 将会有更多的设备支持蓝牙5.0标准. 例如能够支持进行室内导航的无线设备. Bluetooth Special Interest Group在本月16日将在伦敦