MySQL 查詢的成本的檢視
讀《高效能MySQL》第三版,筆記。
MySQL 使用基於成本的優化器,它將嘗試預測一個查詢使用某種執行計劃時的成本,選擇其中成本最小的一個。
最初,成本的最小單位是隨機讀取一個 4K 資料頁的成本,後來(成本計算公式)變得更加複雜,並且引入了一些 “ 因子 ” 來估算某些操作的代價,如當執行一次
WHERE
條件比較的成本。
可以通過查詢當前會話的 last_query_cost
的值來得知 MySQL 計算的當前查詢的成本。
mysql> show status like 'last_query_cost';
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| Last_query_cost | 2.399000 |
+-----------------+----------+
1 row in set (0.00 sec)
以上表示需要 2 個資料頁的隨機查詢才能完成上面的查詢。
這是根據一系列的統計資訊計算得來的:
- 每個表或者所有的頁面個數
- 索引的基數(索引中不同值的數量)
- 索引和資料行的長度
- 索引分配情況
優化器評估成本不考慮快取,它假設讀取任何資料都需要一次磁碟 I/O。
有很多原因會導致 MySQL 優化器選擇錯誤的執行計劃:
- 統計資訊不準確。
- 執行計劃中的成本估算不等同於實際執行的成本。
- MySQL 的最優可能和你想的最優不一樣。
- MySQL 從不考慮其他併發執行的查詢,這可能會影響到當前查詢的速度。
- MySQL 也並不是任何時候都是基於成本的優化。
- MySQL 不會考慮不受其控制的操作的成本。
相關文章
- 【MySQL】檢視&子查詢MySql
- 探究MySQL中SQL查詢的成本MySql
- mysql查詢優化檢查 explainMySql優化AI
- 檢視查詢報錯
- OushuDB 檢視查詢執行情況
- 【PDB】Oracle跨PDB檢視查詢Oracle
- MySQL Case-information_schema檢視查詢慢處理一例MySqlORM
- 【SQL】Oracle查詢轉換之物化檢視查詢重寫SQLOracle
- 檢視ip地址的cmd命令 cmd查詢ip地址命令
- 管理mysql的檢視MySql
- MySQL的分頁查詢MySql
- MySQL 的查詢優化MySql優化
- 檢視 Laravel 查詢資料語句Laravel
- [20210418]查詢v$檢視問題.txt
- 【MySQL】MySQL進階(外來鍵約束、多表查詢、檢視、備份與恢復)MySql
- MySQL 查詢字串的個數MySql字串
- MySQL查詢MySql
- oracle資料庫sql查詢檢視第二次查詢很慢Oracle資料庫SQL
- 使用Tokeniser估算GPT和LLM服務的查詢成本GPT
- SAP MM 物料成本價格修改歷史的查詢
- 查詢MySQL資料庫,MySQL表的大小MySql資料庫
- 如何使用SQL查詢檢視,Postico使用技巧分享~SQL
- 【SQL】Oracle查詢轉換之檢視合併SQLOracle
- MySQL的簡單查詢語句MySql
- mysql dba常用的查詢語句MySql
- MySQL 查詢重複的資料MySql
- mysql中的多表關聯查詢MySql
- Mysql 查詢近半年的資料MySql
- ElasticSearch類似Mysql的not in 和 in 查詢ElasticsearchMySql
- mysql帶IN關鍵字的查詢MySql
- 檢視MySQL鎖等待的原因MySql
- Sqlserver資料庫郵件的體系結構及常用的查詢檢視SQLServer資料庫
- MySQL - 資料查詢 - 簡單查詢MySql
- MySQL:查詢欄位數量多少對查詢效率的影響MySql
- mysql like查詢 - 根據多個條件的模糊匹配查詢MySql
- MySQL 查詢常用操作(0) —— 查詢語句的執行順序MySql
- MySql中的資料查詢語言(DQL)三:連線查詢MySql
- mysql查詢模型MySql模型