如何檢視MySQL中的慢查詢,分析SQL執行效率?

發布 科技 2024-03-23
1個回答
  1. 匿名使用者2024-02-07

    問題。 我們有乙個 sql 可以查詢沒有主鍵唯一鍵的表,但它在 mysql 上執行得很慢,我該怎麼辦?

    實驗。 讓我們設定乙個 MySQL 環境,這裡省略了設定步驟。

    編寫乙個簡單的指令碼來製作一批帶主鍵和不帶主鍵的表:

    執行以下指令碼:

    現在執行以下 sql 檢視效果:

    執行,感覺很慢。

    現在我們用DBA三板斧頭,看一下執行計畫:

    感覺有點苦,因為資訊是元資料表,沒有必要的統計資訊。

    讓我們顯示警告並看一下 mysql 重寫後的 sql

    讓我們格式化 sql:

    你可以看到 mysql 會。

    select from a where not in (select x from b) 是非關聯子查詢。

    我轉換了它。 從不存在的地方選擇(從 B 中選擇 1,其中 = 關聯的子查詢。

    如果我們自己是MySQL,我們可以在執行非關聯子查詢時使用乙個非常簡單的策略:

    select from a where not in (select x from b where ..非冠治突襲蓮子查詢:1

    掃瞄表B中的所有記錄,找到符合條件的記錄,將其儲存在臨時表C中,並建立索引2掃瞄表 A 中的記錄,將其與臨時表 C 中的記錄進行比較,並直接在索引中進行比較,而關聯子查詢需要迴圈迭代:

    select from a where not exists (select 1 from b where = and ..關聯子查詢掃瞄表 A 的每條記錄以查詢 RA:掃瞄表 B 以查詢滿足 RA 條件的第一條記錄。

    顯然,關聯子查詢的掃瞄成本將高於非關聯子查詢的掃瞄成本。

    我們希望MySQL能排在第一位"快取"子查詢的結果(快取這一步稱為物化),但是MySQL認為不快取更快,所以我們需要給MySQL一些指導。

    可以看到執行時間變成了 。

    1.對於資訊架構中的元資料表,執行計畫不提供有效資訊。

    2.通過檢視 MySQL 重寫的 SQL,我們猜測優化器存在誤報。

    3.我們新增了提示來指導 MySQL 做出正確的優化判斷。

    但目前,我們的實驗僅限於猜測,如果我們猜對了,一切都會好起來的,如果我們猜不到,我們將無法做出好的診斷。

相關回答
2個回答2024-03-23

1. MySQL資料庫有幾個配置選項,可以幫助我們及時捕獲低效的SQL語句1、慢查詢日誌 >>>More

21個回答2024-03-23

如果您使用的是華為手機,您可以通過以下方式檢查真偽: >>>More

7個回答2024-03-23

顯示卡是顯示卡的縮寫,是顯示器與上位機之間的控制電路和介面,是計算機最基本的配置和重要配件之一。 顯示卡作為計算機主機的重要組成部分,是計算機轉換數字和模擬訊號的裝置,承擔著輸出和顯示圖形的任務,顯示卡與計算機主機板相連,將計算機的數碼訊號轉換為模擬訊號供顯示器顯示, 而且顯示卡仍然具有影象處理能力,可以輔助處理器工作,提高整體執行速度。對於從事專業圖形規劃的人來說,顯示卡非常重要。 >>>More

12個回答2024-03-23

社保醫保關係到我們每個人的切身利益,但很多人對自己的社保醫保支付知之甚少,也不知道如何找到。 這裡有乙個快速的方法,可以幫助你找出你的社會保障和健康保險繳款在哪裡。 >>>More

12個回答2024-03-23

3.**查詢:可通過11185、12580專項服務查詢。

我國採用四級六位編碼系統,前兩位代表省(直轄市、自治區),前三位代表郵政區,前四位代表縣(市),後兩位代表城市的投遞區域,即投遞區域所在地。 >>>More