第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

一些有意思的sql性能問(wèn)題及解決方法

標(biāo)簽:
MySQL

webp

sql.jpg

本人以前主要做移动端开发,较少使用sql,哪怕用也只是小数据量的简单sql增删改查。最近几个月被拉来做.net开发,于是不得不面对后台数据库操作的问题,这几天遇到了一些sql查询慢的问题,所幸都得到了优化。这里记录下:

一、concat导致全表扫描

准确的讲,应该是concat导致索引无效,从而导致全表扫描。
情况是这样的:单表100万+数据,有一Date和Time字段,需要做时间判断,取某个时间段以内的记录。
于是,使用concat很快就实现了查询的sql,如下:

// 问题sqlSELECT * FROM `sys_record` 
        WHERE '2018-08-19 10:10:00' <= CONCAT(`Date` ," ", `StartTime`) 
        AND '2018-10-20 22:20:50' >= CONCAT(`Date`," ",`StartTime`)   LIMIT 0, 10

开始执行...居然超过15秒才看到结果,明明才找10条数据,花这么长时间,绝对忍受不了。
于是,开始考虑优化,Date字段是带有索引的,于是就有了一条有意思的sql:

// 优化后SELECT * FROM `sys_record` 
    WHERE  '2018-08-19' <=`Date` 
        AND '2018-10-20' >=`Date` AND        '2018-08-19 10:10:00' <= CONCAT(`Date` ," ", `StartTime`) 
        AND '2018-10-20 22:20:50' >= CONCAT(`Date`," ",`StartTime`) LIMIT 0, 10

与上面的sql比较,只是多了看似多余的两句,但是执行查询后,5毫秒就出结果了,执行速度提升了几千倍,这都是索引起到的作用,加了前面两句,索引字段Date先起到了范围过滤的作用,所以查询速度快,而之前的sql语句,由于使用concat函数拼接Date和StartTime,导致Date索引起不到效果,所以查询速度慢

看似多余的查询条件,居然让sql执行效率优化三千倍(15s -> 0.005s),这都是索引的功能

二、少一个空格,执行时间多万倍

SELECT SQL_NO_CACHE * FROM `sys_record` WHERE _ID > 100000SELECT SQL_NO_CACHE * FROM`sys_record` WHERE _ID > 100000



作者:ThinkinLiu
链接:https://www.jianshu.com/p/91bf665e9ea1


點(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
提交
取消