2013-05-14 73 views
1

閱讀問題之前關閉作爲重複,因爲有很多關於這個問題,但至少我沒有找到我在找什麼。mysql - MyISAM或InnoDB - 加入速度與查找速度

什麼是明確的現在:

MyIsam is faster at searching strings (much faster) 
InnoDB is faster at joins (much faster) 

所以我的問題是這樣的:我有以下設置:

兩個表,讓說,T1爲列idbla1bla2,... ,blan;並且t2具有列t1Id,extra1,extra2,...,extran

表1(t1)是InnoDB(需要交易清楚)。表2(t2)總是與t1一起使用(對於某些特定情況是額外的數據),因此總是會在t2出現的地方連接它們。這將指向InnoDB。事情是,在連接之後,一個搜索也將完成(總是)一個字符串在一列中。這將指向MyISAM。

獲取某物的時間顯然是連接時間和搜索時間之和。問題是,如果我優化一個,我會讓另一個慢一些。

獎金事實:表格確實很大,t2從不需要事務,行鎖或任何通常施加於InnoDB的東西。

什麼是更好的選擇? MyISAM或InnoDB?

回答

4

唯一可以肯定的方式是創建兩個表,使用示例數據加載它們並測量您的查詢。

一般來說,我會建議你使用InnoDB:

  1. 從MySQL 5.6全文搜索也availiable在InnoBD(http://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html),所以我想你會失去你的MyISAM快速字符串搜索爲主要betefit
  2. 使用MyISAM,您不僅會失去行鎖定支持,還會丟失外鍵以及數據完整性+不要忘記MyISAM「崩潰」
1

我會做這樣的:

檢查這裏的free MySQL查詢分析器。

通過這種方式,您可以查看聯接和搜索的成本。那麼你應該根據結果選擇格式!如果搜索「成本」更多,則選擇mYisam,例如。

除此之外:here有一個很好的比較,它可以幫助您找到這可能取決於即使在插入等

希望它可以幫助的數量是最適合你。很難說:一個更好。在一般情況下,這實際上取決於您的查詢,您的數據等。