[求指導] 如何通過程式碼分析一個查詢語句的執行效率

LittleLittleBig發表於2020-06-12

背景

我想分析不同的 SQL 的執行效率。我的思路是先對這些 SQL 進行 EXPLAIN,然後根據一些維度來確定這個 SQL 的效率到底如何。

難點1:如何獲取一個 SQL 的格式

因為查詢中存在大量相同格式的語句,比如 SELECT * FROM user WHERE id =1SELECT * FROM user WHERE id = 2。這個 2 個語句格式是相同的,只是引數不同,執行效率是一樣的。
所以我想獲得一個 SQL 的格式,我嘗試了使用 sql-parser 包來進行分析,但效果不理想。有沒有什麼辦法可以獲得一個 SQL 的格式呢,比如將SELECT * FROM user WHERE id =1 解析為 SELECT * FROM user WHERE id = :id如果沒有成熟的解決方案,有沒有什麼解決思路呢?

難點2:如何定義一個 SQL 的執行效率

我的思路是獲得 EXPLAIN 結果後,從索引命中、關聯的表數量,然後結合現有業務和公司規範來定義一個 SQL 的執行效率到底是快還是慢。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章