MySQL查詢中Sending data佔用大量時間的問題處理
以上SQL很多列沒有用到索引。
1 queries executed, 1 success, 0 errors, 0 warnings
查詢:SELECT tm.id, tm.to_no , tm.source_website_id , tm.warehouse_name , tm.target_website_id , tm.channel_name , tm.sale_channel_nam...
共 1000 行受到影響
執行耗時 : 1 min 10 sec
傳送時間 : 0.016 sec
總耗時 : 1 min 10 sec
Sending data花費時間最長。
“Sending data”狀態的含義,原來這個狀態的名稱很具有誤導性,所謂的“Sending data”並不是單純的傳送資料,而是包括“收集 + 傳送 資料”。
這裡的關鍵是為什麼要收集資料,原因在於:mysql使用“索引”完成查詢結束後,mysql得到了一堆的行id,如果有的列並不在索引中,mysql需要重新到“資料行”上將需要返回的資料讀取出來返回個客戶端。
對欄位新增索引。
第一條索引:ALTER TABLE `transfer_detail` ADD INDEX idx_transfer_id (`transfer_id`);
第二條索引:ALTER TABLE `transfer_item` ADD INDEX idx_to_id (`to_id`);
第三條索引:ALTER TABLE `transfer_operation` ADD INDEX idx_transfer_id (`transfer_id`);
加 第一條索引:ALTER TABLE `transfer_detail` ADD INDEX idx_transfer_id (`transfer_id`);
執行計劃:
消耗時間:
加第二條索引: ALTER TABLE `transfer_item` ADD INDEX idx_to_id (`to_id`);
執行計劃:
消耗時間:
加第三條索引: ALTER TABLE `transfer_operation` ADD INDEX idx_transfer_id (`transfer_id`);
執行計劃:
消耗時間:
優化完成。
tm表的條件欄位資料分佈不均勻,不建議加索引。
對條件欄位新增索引後,Sending data消耗時間大幅下降。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22996654/viewspace-2660182/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Laravel MongoDB 時間區間查詢的問題LaravelMongoDB
- MySQL查詢時間段MySql
- 關於 mysql 中的 rand () 查詢問題MySql
- 使用並查集處理集合的合併和查詢問題並查集
- redis~有序集合處理ip範圍的查詢問題Redis
- Mysql中的巢狀子查詢問題QSBSMySql巢狀
- 關於時間 PHP 處理包遇到的問題時間序列化差值問題PHP
- mysql查詢中時間、日期加減計算MySql
- SHARED POOL中KGH: NOACCESS佔用大量記憶體的問題分析記憶體
- MySQL字串轉時間戳查詢MySql字串時間戳
- MySQL:sending data狀態包含了什麼MySql
- 如何處理 MySQL 萬用字元的模糊查詢MySql字元
- 臨時表空間被佔滿的原因查詢
- 低效sql語句執行緩慢引起的大量佔用伺服器的CPU問題處理 (優化心得)SQL伺服器優化
- 一個MySQL多表查詢的問題MySql
- mysql 執行一段時間比較慢問題處理經過MySql
- 使用 pytz 處理 Python 中的時區問題Python
- mysql分割槽表佔用大量容量處理(最佳化)及歸檔分割槽表MySql
- Java中對時間的處理Java
- nodejs 連線 mysql 查詢事務處理NodeJSMySql
- python資料庫查詢返回時間為datetime型別時候的特殊處理Python資料庫型別
- mysql查詢最近時間的一組資料MySql
- 問題:mybatis like 佔位符處理MyBatis
- Oracle 查詢佔用臨時表空間大的歷史會話和SQLOracle會話SQL
- Linux下處理時間同步相關問題彙總Linux
- VNPY2 中凌晨0點時間戳的處理問題,和夜盤資料時間戳分析時間戳
- Java8中的時間處理Java
- MySQL:亂碼問題處理流程MySql
- python查詢mysql中文亂碼問題PythonMySql
- MySQL鎖表相關問題查詢思路MySql
- JDBC用ResultSet訪問大量資料時會遇到的問題JDBC
- Calendar類在Java中的應用與日期時間處理Java
- 【問題處理】MySQL忘記root密碼的處理辦法MySql密碼
- 查詢埠號佔用
- Oracle 12C RMAN備份佔用大量臨時表空間Oracle
- Mysql按時間分組查詢(每天|每月|每年)MySql
- Pandas中時間和日期處理
- RTL 時間的處理