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