文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  MERGE 資料表的優點與缺點

18.7.1 MERGE 資料表的優點與缺點

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_refref 的更多資訊,請參閱 第 15.8.2 節,「EXPLAIN 陳述式」