程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL查詢分析與優化

MySQL查詢分析與優化

編輯:MySQL綜合教程


MySQL查詢分析與優化   Show    www.2cto.com   show status ——顯示狀態信息(擴展show status like ‘XXX’) show variables ——顯示系統變量(擴展show variables like ‘XXX’) show engine innodb status ——顯示InnoDB存儲引擎的狀態 show processlist ——查看當前SQL執行,包括執行狀態、是否鎖表等 mysqladmin variables -u username -p password——顯示系統變量 mysqladmin extended-status -u username -p password——顯示狀態信息   Explain Table:顯示這一行的數據是關於哪張表的   possible_keys:顯示可能應用在這張表中的索引。如果為空,沒有可能的索引。可以為相關的域從WHERE語句中選擇一個合適的語句    www.2cto.com   key:實際使用的索引。如果為NULL,則沒有使用索引。MYSQL很少會選擇優化不足的索引,此時可以在SELECT語句中使用USE INDEX(index)來強制使用一個索引或者用IGNORE INDEX(index)來強制忽略索引   key_len:使用的索引的長度。在不損失精確性的情況下,長度越短越好   ref:顯示索引的哪一列被使用了,如果可能的話,是一個常數   rows:MySQL認為必須檢索的用來返回請求數據的行數   type:這是最重要的字段之一,顯示查詢使用了何種類型。從最好到最差的連接類型為system、const、eq_reg、ref、range、index和ALL system、const:可以將查詢的變量轉為常量.  如id=1; id為 主鍵或唯一鍵. eq_ref:訪問索引,返回某單一行的數據.(通常在聯接時出現,查詢使用的索引為主鍵或惟一鍵) ref:訪問索引,返回某個值的數據.(可以返回多行) 通常使用=時發生 range:這個連接類型使用索引返回一個范圍中的行,比如使用>或<查找東西,並且該字段上建有索引時發生的情況(注:不一定好於index) index:以索引的順序進行全表掃描,優點是不用排序,缺點是還要全表掃描 ALL:全表掃描,應該盡量避免   Extra:關於MYSQL如何解析查詢的額外信息,主要有以下幾種 using index:只用到索引,可以避免訪問表.  using where:使用到where來過慮數據. 不是所有的where clause都要顯示using where. 如以=方式訪問索引. using tmporary:用到臨時表 using filesort:用到額外的排序. (當使用order by v1,而沒用到索引時,就會使用額外的排序) range checked for eache record(index map:N):沒有好的索引.   Profiling 打開功能: mysql>set profiling=1; show profiles; 可以得到被執行的SQL語句的時間和ID show profile for query 1; 得到對應SQL語句執行的詳細信息 測試完畢以後 ,關閉參數:mysql> set profiling=0  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved