1.使用 show session status like '%Com_%'; 可以查看當前連接的各個sql的執行頻率 show global status like '%Com_%'; 可以查看從上次mysql服務器啟動到目前為止sql的執行頻率 2.explain select * from tmp; mysql> explain select * from zi_emp where tid = 1000\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: zi_emp type: ALL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 2 Extra: Using where 1 row in set (0.00 sec) PS::type類型中,ALL為效率最差,因為這樣意味著進行全表掃描 index類型為索引全掃描 range為索引范圍掃描 ref為非唯一索引或唯一索引的前綴掃描 eq_ref唯一索引掃描 const/system 單表中只有一個匹配的行,比如用戶表 NULL 沒有訪問到表或索引 比如:select 1=1; 3.哈哈,發現一個很好的東西 explain extended select * from zi_emp; 查看執行sql語句前,mysql優化器做了點什麼 show warnings; mysql> show warnings\G *************************** 1. row *************************** Level: Note Code: 1003 Message: select `bin`.`zi_emp`.`tid` AS `tid`,`bin`.`zi_emp`.`tname` AS `tname` from `bin`.`zi_emp` 1 row in set (0.00 sec) PS::沒錯,你看的就是一條完整的sql語句,也就是說這可能是msyql給定的最好的sql語句了,可以學習並復用 4.explain partitions select * from zi_emp where xxxxx 可以查看當前記錄的分區所在位置
這條SQL語句很簡單,就一個條件單純從語句上已經無法優化了,但可以使用其它的方法
比如,你的 guid 是一個固定長度的字符串嗎?如果是的話,可以使用 char 類型,另外,如果 guid 字段不是主鍵的話,並且經常被檢索的話,可以為該字段創建索引,有了索引以後,相信查詢速度至少可以提高10倍以上
你是要sql性能調優還是想縮短sql長度啊 這句sql又不是復雜sql 就是幾個嵌套 你用執行計劃跑一下 看性能消耗在哪段上 再針對那段優化
你sql裡面最耗費性能的我估計就是distinct 我看你這裡完全沒有必要做這個 直接去掉就可以了