怎样提升mysql查询速度_如何将你的MySQL查询速度提升300倍

MySQL供给了内建低砟瓯萌芽日记。应用前,打开my.cnf文件,将slow_query_log设置为"On"。 同时将long_query_time设置为一个对一次萌芽来说比较慢的时光(秒数),比如0.2。slow_query_log_file设置为你想保存日记文件的路径。然后运行代码,履行时光跨越设定上限的萌芽将会被记录到日记中。

f8c8c04b71c8811a751fed4a4e353332.jpg-wh_651x-s_1340272585.jpg

a894ffc4af4fee90150dec46099d032e.png

一旦定位这些常人的萌芽,就可以商量慢的原因。MySQL供给了EXPLAIN关键字。可以与SELECT、DELETE、INSERT、WordStr、UPDATE语句一路应用。只须要如下一样添加到萌芽开端处:EXPLAINSELECTpicture.id, picture.title

FROMpicture

LEFTJOINalbumONpicture.album_id = album.idWHEREalbum.user_id = 1;

结不雅是对数据拜访过程的解析。每行代表一个萌芽相干的数据表:

重点是表名、应用的key、萌芽履行时所扫描的行数。

cbeba2b0d1036102c07dda0d77e4c55e.png

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

索引

应用索引,可以极大年夜晋升机能。比如地址簿中的名字。找一个名字,你可以大年夜头翻到尾,也可以找到响应的字符标签页来快速定位。

应用索引可以避免无须要的表扫描。比如在picture.album_id上添加索引:ALTERTABLEpictureADDINDEX(album_id);

在进行机能分析前,须要先定位耗时萌芽。

如今履行萌芽,就不会扫描全部picture列表了。起首,所有的album表会被扫描以找到属于该用户的album,然后,应用album_id列索引快速定位对应的picture。扫描的行数削减到了20万,比原始萌芽快了317倍。

a51d9d85c4a56ae979e9f19c7d2f3ac6.png

按照以下方法添加索引可以确保两张表都能应用对应键:ALTERTABLEalbumADDINDEX(user_id);

425351af4463ed6a53fe951e835c0a79.png

此次,album表不会被全部扫描,经由过程user_id键就可以准肯定位响应的album。然后这100个album被扫描后,经由过程album_id键相干的picture也可以快速找到。每张表都用到了一个键进行萌芽机能优化,结不雅比原始萌芽快了380倍。

【编辑推荐】Python操作MySQL根本情况搭建及增删改查实现

在Docker中运行MySQL:多主机收集下Docker Swarm模式的容器治理

Java中若何应用嵌入MySQL

将数据大年夜MySQL迁徙到Oracle的留意事项

我必须得告诉大年夜家的MySQL优化道理【义务编辑:51CTO_OS TEL:(010)68476606】

然则并不料味着可以随便添加索引,因为索引会导致写数据库用时增长。所以应用索引导致读用时缩短,写竽暌姑时增长。是以,如不雅能晋升读机能时再添加索引。应用EXPLAIN来确认索引是否被萌芽用到,没有就删除。

推荐阅读

多云模型面对着独特的设备治理挑衅。被选择一个对象时,企业应当细心比较云本地和第三方的选项。但企业面对着一个重要选择:在公有云中应用本地设备办事,照样应用第三方对象,如Ansible 和CFengine。这一选择并不简>>>详细阅读

地址:http://www.17bianji.com/lsqh/35138.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值