最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

記一次order by desc limit導(dǎo)致的查詢(xún)慢

標(biāo)簽:
MySQL


    昨天接到一个客户的问题,电脑上可以打开网站,在手机上确不能打开报500的错。首先登陆上客户的服务器查看环境apache+mysql+php,php和mysql的占用都比较高,按经验来说那就是mysql的问题了,登陆mysql用show processlist查看进程,发现一条查询一直在sending date

mysql> show processlist;

+------+------+-----------------+--------+---------+------+--------------+------

--------------------------------------------------------------------------------

----------------+

| Id   | User | Host            | db     | Command | Time | State        | Info

                |

+------+------+-----------------+--------+---------+------+--------------+------

--------------------------------------------------------------------------------

----------------+

| 1832 | root | localhost:53490 | NULL   | Query   |    0 | NULL         | show

processlist

                |

| 1842 | root | localhost:53508 | yungou | Query   |    4 | Sending data | selec

t a.id,a.q_user,a.q_showtime,a.thumb,a.title,a.q_uid,qishu,announced_type,q_end_

time ,(SELECT ` |

+------+------+-----------------+--------+---------+------+--------------+------

--------------------------------------------------------------------------------

----------------+

2 rows in set (0.00 sec)

明显不对啊,把这条语句单独拿出来执行也是慢得要死48s。

explain分析一下这条语句:

mysql> explain select a.id,a.q_user,a.q_showtime,a.thumb,a.title,a.q_uid,qishu,a

nnounced_type,q_end_time ,(SELECT `time` FROM `go_member_go_record` WHERE shopid

 = a.id ORDER BY `time` DESC LIMIT 1 ) as gm_time from `go_shoplist` as a where

`shenyurenshu` <=0 ORDER BY `gm_time` DESC LIMIT 4\G;

*************************** 1. row ***************************

           id: 1

  select_type: PRIMARY

        table: a

         type: range

possible_keys: shenyurenshu

          key: shenyurenshu

      key_len: 4

          ref: NULL

         rows: 945

        Extra: Using where; Using filesort

*************************** 2. row ***************************

           id: 2

  select_type: DEPENDENT SUBQUERY

        table: go_member_go_record

         type: index

possible_keys: shopid

          key: time

      key_len: 63

          ref: NULL

         rows: 1

        Extra: Using where

2 rows in set (0.00 sec)

一看type是range就悲剧了,慢是肯定的了,但是945条记录也不至于这么慢啊!!

没办法用简化法来定位错误,先去掉子查询,直接

select a.id,a.q_user,a.q_showtime,a.thumb,a.title,a.q_uid,qishu,announced_type,q_end_time from `go_shoplist` as a where `shenyurenshu` <=0 ORDER BY `gm_time` DESC LIMIT 4;

没有问题,速度杠杠的~~

那就是子查询的问题了哦,从哪里动刀呢?order by desc limit

首先去掉排序,查询杠杠的~~

然后想想order by desc limit 1怎么替代呢,这句的意思是查询最大的值,那我直接用max可以吗?马上修改

select a.id,a.q_user,a.q_showtime,a.thumb,a.title,a.q_uid,qishu,announced_type,q_end_time ,(SELECT MAX(`time`) FROM `go_member_go_record` WHERE shopid = a.id ) as gm_time from `go_shoplist` as a where `shenyurenshu` <=0 ORDER BY `gm_time` DESC LIMIT 4;

打开网站,哈哈,速度杠杠的~~

©著作权归作者所有:来自51CTO博客作者sheva的原创作品,谢绝转载,否则将追究法律责任

mysql优化web


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消