日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

高性能MySQL读书笔记---查询优化

發(fā)布時間:2025/3/18 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高性能MySQL读书笔记---查询优化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

查詢優(yōu)化

  • 查詢緩慢的原因

    • 是否向數(shù)據(jù)庫請求了不必要的數(shù)據(jù)
      1.查詢時是否返回了全部或者大部分?jǐn)?shù)據(jù)然后再進(jìn)行處理的。
      2.進(jìn)行單查或者多表聯(lián)查時是否返回了全部列數(shù)據(jù)。例如:

      SELECT * FORM table1 WHERE a=1;SELECT * FORM table1 LEFT JOIN table2 LEFT JOIN table2 where a = b;

      查詢時盡量只查自己需要的字段,盡量不要用*查詢
      查詢400萬數(shù)據(jù),十個字段時直接使用*查詢耗費時間為11s,只查詢id時耗費3s左右

    • 查詢單條數(shù)據(jù)確定行時盡量使用LINIT來限制查詢行數(shù),終止查詢,否則就算找到對應(yīng)列后MsSQL還是繼續(xù)掃描
      不加索引的情況下,查詢單條數(shù)據(jù)不加limit 2.5s 加上limit限制0.1s

  • 拆分復(fù)雜的查詢方式

    • 將一個復(fù)雜的查詢拆分成多個簡單的查詢。
    • 將一次處理大量數(shù)據(jù)的操作,分解為多個小操作。循環(huán)的方式每次處理一部分?jǐn)?shù)據(jù)。一次刪除不要超過10 000行(delete)
    • 減少JOIN的使用,把多表聯(lián)查的查詢分解成多個單表查詢,在應(yīng)用程序中實現(xiàn)連接操作
      拆分查詢的優(yōu)勢:
  • 能更有效的利用MySQL緩存
  • 可以有效的利用表鎖,查詢會鎖住單個表較短時間。
  • 客戶端可以方便拆分?jǐn)?shù)據(jù)庫和拆分表,做分布式數(shù)據(jù)庫。
  • MySQL解析器解析SQL更迅速,查詢更高效
  • 可以更好的利用索引
  • 減少對多余數(shù)據(jù)的訪問,減少內(nèi)存和網(wǎng)絡(luò)的開銷
  • 減少對COUNT的使用,因為InnoDB使用COUNT是做的全表掃描,對大表使用COUNT查詢會非常緩慢

    • 對于需要統(tǒng)計的數(shù)據(jù)冗余的統(tǒng)計表來做統(tǒng)計操作,一個小時或者一天統(tǒng)計一次數(shù)據(jù)
    • 使用Redis之類的緩存技術(shù)來做統(tǒng)計功能,例如排行榜和點贊人數(shù)統(tǒng)計可以用redis的有序集合來做
  • 減少min,max的使用,因為也會掃描整個表,若需要統(tǒng)計盡量使用緩存來做
  • 使用order by group by 時,盡量確保只引用表中的一列,多了會使用不到索引。盡量減少在數(shù)據(jù)庫中進(jìn)行排序操作
  • 總結(jié)

    以上是生活随笔為你收集整理的高性能MySQL读书笔记---查询优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。