日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

查詢優化

  • 查詢緩慢的原因

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

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

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

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

  • 拆分復雜的查詢方式

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

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

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。