# 16.7.1 合并表的优缺点

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

  • 轻松管理一组日志表。例如,您可以将不同月份的数据放入单独的表中,使用myisampack,然后创建一个合并表将它们合二为一。

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

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

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

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

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

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

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

    的缺点合并表是:

  • 您只能使用相同的MyISAM合并桌子。

  • 一些MyISAM功能在合并表。例如,您不能创建全文索引合并表。(您可以创建全文基础指数MyISAM表,但您无法搜索合并带有全文搜索的表。)

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

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

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