2015-10-21 169 views
0

高級SQL查詢Newb先謝謝您!速度Mysql查詢優化

我有2個表,監視器和統計。統計表是100萬行加上行。我查看我想要的顯示器,然後查詢最新條目的統計表。由於統計表的大小 - 它很慢,15+秒。

select `Service`.`monitors`.`host` AS `host`, 
     `Service`.`monitors`.`port` AS `port`, 
     `Service`.`monitors`.`alias` AS `alias`, 
     (select `Service`.`stats`.`value` 
     from `Service`.`stats` 
     where (
      concat('monitor', 
       cast(`Service`.`monitors`.`id` as char charset utf8)) 
      = convert(`Service`.`stats`.`series` using utf8)) 
     order by `Service`.`stats`.`key` desc limit 1) AS `val` 
from `Service`.`monitors` 
where (`Service`.`monitors`.`host` like '%te1%') 

stats.key值是UNIX時間戳,但列是INT,我不能把它轉換爲各種原因。 MAX INT的工作速度會達到極限1嗎?

對查詢結構的任何建議非常感謝!

+0

「EXPLAIN ...」的輸出是什麼? – jonbaldie

回答

0

問題是你的數據沒有很好的組織在第一手;如果您需要在每個位置執行操作並插入子查詢,MySQL優化器決不會找到一種方法來優化您的查詢並掃描結果的較少行。

+0

同意 - 我試圖在重做數據庫設計之前儘可能提高性能。 – user3425900