MERGE
資料表可以幫助您解決以下問題
輕鬆管理一組記錄資料表。例如,您可以將不同月份的資料放入不同的資料表中,使用 myisampack壓縮其中一些資料表,然後建立一個
MERGE
資料表以將它們視為一個資料表使用。獲得更快的速度。您可以根據某些條件分割大型唯讀資料表,然後將個別資料表放在不同的磁碟上。以這種方式結構化的
MERGE
資料表可能比使用單個大型資料表快得多。執行更有效率的搜尋。如果您確切知道自己在尋找什麼,您可以在某些查詢的其中一個基礎資料表中搜尋,並在其他查詢中使用
MERGE
資料表。您甚至可以擁有許多使用重疊資料表集的不同MERGE
資料表。執行更有效率的修復。修復對應到
MERGE
資料表的個別較小資料表,比修復單個大型資料表更容易。立即將多個資料表對應為一個資料表。
MERGE
資料表不需要維護自己的索引,因為它使用個別資料表的索引。因此,MERGE
資料表集合的建立或重新對應速度非常快。(當您建立MERGE
資料表時,您仍然必須指定索引定義,即使沒有建立索引。)如果您有一組資料表,您可以從中按需建立大型資料表,則可以改為按需從這些資料表建立
MERGE
資料表。這速度更快,並可節省大量的磁碟空間。超出作業系統的檔案大小限制。每個
MyISAM
資料表都受此限制約束,但是MyISAM
資料表的集合則不受此限制。您可以透過定義對應到該單個資料表的
MERGE
資料表,來建立MyISAM
資料表的別名或同義詞。這樣做應該不會有明顯的效能影響(每個讀取操作只會產生幾個間接呼叫和memcpy()
呼叫)。
MERGE
資料表的缺點是
您只能將相同的
MyISAM
資料表用於MERGE
資料表。某些
MyISAM
功能在MERGE
資料表中不可用。例如,您無法在MERGE
資料表上建立FULLTEXT
索引。(您可以在基礎MyISAM
資料表上建立FULLTEXT
索引,但您無法使用全文搜尋來搜尋MERGE
資料表。)如果
MERGE
資料表不是暫時性的,則所有基礎的MyISAM
資料表都必須是非暫時性的。如果MERGE
資料表是暫時性的,則MyISAM
資料表可以是暫時性和非暫時性的任何組合。MERGE
資料表使用的檔案描述符比MyISAM
資料表多。如果 10 個用戶端正在使用對應到 10 個資料表的MERGE
資料表,則伺服器會使用 (10 × 10) + 10 個檔案描述符。(每個 10 個用戶端使用 10 個資料檔案描述符,以及用戶端之間共用的 10 個索引檔案描述符。)索引讀取速度較慢。當您讀取索引時,
MERGE
儲存引擎需要在所有基礎資料表上發出讀取操作,以檢查哪一個資料表最符合指定的索引值。若要讀取下一個索引值,MERGE
儲存引擎需要搜尋讀取緩衝區以找到下一個值。只有當一個索引緩衝區用完時,儲存引擎才需要讀取下一個索引區塊。這使得MERGE
索引在eq_ref
搜尋時速度慢得多,但在ref
搜尋時速度不會慢很多。有關eq_ref
和ref
的更多資訊,請參閱 第 15.8.2 節,「EXPLAIN 陳述式」。