### 16.7.1 合并表的优缺点

`合并`表格可以帮助您解决以下问题：

-   轻松管理一组日志表。例如，您可以将不同月份的数据放入单独的表中，使用[**myisampack**](myisampack.html)，然后创建一个`合并`表将它们合二为一。

-   获得更快的速度。您可以根据某些条件拆分大型只读表，然后将各个表放在不同的磁盘上。一种`合并`以这种方式构建的表可能比使用单个大表快得多。

-   执行更有效的搜索。如果您确切知道要查找的内容，则可以仅在其中一个基础表中搜索某些查询并使用`合并`给别人的表。你甚至可以有很多不同的`合并`使用重叠表集的表。

-   进行更有效的维修。更容易修复映射到`合并`表比修复单个大表。

-   立即将许多表映射为一个。一种`合并`table 不需要维护自己的索引，因为它使用各个表的索引。因此，`合并`表集合是*非常*快速创建或重新映射。（您仍然必须在创​​建索引时指定索引定义`合并`表，即使没有创建索引。）

-   如果您有一组表可以根据需要创建一个大表，则可以改为创建一个`合并`根据需要从他们那里获得表。这要快得多，并且可以节省大量磁盘空间。

-   超过操作系统的文件大小限制。每个`MyISAM`表受此限制，但集合`MyISAM`表不是。

-   您可以创建别名或同义词`MyISAM`通过定义一个表`合并`映射到该单个表的表。这样做应该不会对性能产生真正显着的影响（只有几个间接调用和`内存（）`每次读取都调用）。

    的缺点`合并`表是：

-   您只能使用相同的`MyISAM`表`合并`桌子。

-   一些`MyISAM`功能在`合并`表。例如，您不能创建`全文`索引`合并`表。（您可以创建`全文`基础指数`MyISAM`表，但您无法搜索`合并`带有全文搜索的表。）

-   如果`合并`表是非临时的，所有底层`MyISAM`表必须是非临时的。如果`合并`表是临时的，`MyISAM`表可以是临时表和非临时表的任意组合。

-   [](<>) `合并`表使用的文件描述符多于`MyISAM`表。如果 10 个客户端正在使用`合并`映射到 10 个表的表，服务器使用 (10 × 10) + 10 个文件描述符。（10 个客户端中的每一个都有 10 个数据文件描述符，以及在客户端之间共享的 10 个索引文件描述符。）

-   索引读取速度较慢。当您阅读索引时，`合并`存储引擎需要对所有基础表进行读取，以检查哪一个与给定的索引值最匹配。要读取下一个索引值，`合并`存储引擎需要搜索读取缓冲区以找到下一个值。只有当一个索引缓冲区用完时，存储引擎才需要读取下一个索引块。这使得`合并`索引要慢得多[`eq_ref`](explain-output.html#jointype_eq_ref)搜索，但速度并不慢[`参考`](explain-output.html#jointype_ref)搜索。有关更多信息[`eq_ref`](explain-output.html#jointype_eq_ref)和[`参考`](explain-output.html#jointype_ref)， 看[第 13.8.2 节，“解释声明”](explain.html).
