18.7.1 Преимущества и недостатки таблиц MERGE
MERGE таблицы могут помочь вам решить следующие проблемы:
Легко управлять набором таблиц журналов. Например, вы можете поместить данные из разных месяцев в отдельные таблицы, сжать некоторые из них с помощью myisampack, а затем создать таблицу
MERGEдля использования их как одной.Получить большую скорость. Вы можете разделить большую только для чтения таблицу по определенным критериям и затем поместить отдельные таблицы на разные диски. Таблица
MERGE, структурированная таким образом, может быть намного быстрее, чем использование одной большой таблицы.Выполнять более эффективные поиски. Если вы точно знаете, что ищете, вы можете искать в одной из базовых таблиц для некоторых запросов и использовать таблицу
MERGEдля других. Вы даже можете иметь множество различных таблицMERGE, использующих перекрывающиеся наборы таблиц.Выполнять более эффективные исправления. Легче исправить отдельные меньшие таблицы, которые сопоставлены с таблицей
MERGE, чем исправить одну большую таблицу.Немедленно отобразить множество таблиц как одну. Таблица
MERGEне должна поддерживать собственный индекс, потому что она использует индексы отдельных таблиц. В результате коллекции таблицMERGEочень быстро создаются или переопределяются. (Вы по-прежнему должны указать определения индексов при создании таблицыMERGE, даже если индексы не создаются.)Если у вас есть набор таблиц, из которых вы создаёте большую таблицу по запросу, вы можете вместо этого создать таблицу
MERGEиз них по запросу. Это намного быстрее и экономит много места на диске.Превысить лимит размера файла для операционной системы. Каждая таблица
MyISAMограничена этим лимитом, но коллекция таблицMyISAMне ограничена.Вы можете создать псевдоним или синоним для таблицы
MyISAM, определив таблицуMERGE, которая отображается на эту единственную таблицу. От этого не должно быть заметного влияния на производительность (только несколько косвенных вызовов и вызововmemcpy()для каждого чтения).
Недостатки таблиц MERGE:
Для таблицы
MERGEможно использовать только идентичные таблицыMyISAM.Некоторые функции
MyISAMнедоступны в таблицахMERGE. Например, вы не можете создать индексыFULLTEXTв таблицахMERGE. (Вы можете создать индексыFULLTEXTв базовых таблицахMyISAM, но вы не можете выполнить поиск в таблицеMERGEс помощью полнотекстового поиска.)Если таблица
MERGEне временная, все базовые таблицыMyISAMдолжны быть не временными. Если таблицаMERGEвременная, таблицыMyISAMмогут быть любой комбинацией временных и постоянных.Таблицы
MERGEиспользуют больше дескрипторов файлов, чем таблицыMyISAM. Если 10 клиентов используют таблицуMERGE, которая отображается на 10 таблиц, сервер использует (10 × 10) + 10 дескрипторов файлов. (10 дескрипторов файлов данных для каждого из 10 клиентов и 10 дескрипторов файлов индексов, общих для клиентов.)Чтение индексов медленнее. Когда вы читаете индекс, хранилище данных
MERGEдолжно выполнить чтение во всех базовых таблицах, чтобы проверить, какая из них наиболее точно соответствует заданному значению индекса. Для чтения следующего значения индекса хранилище данныхMERGEдолжно искать в буферах чтения, чтобы найти следующее значение. Только когда один буфер индекса оказывается исчерпанным, хранилище данных должно прочитать следующий блок индекса. Это делает индексыMERGEзначительно медленнее при поискеeq_ref, но не намного медленнее при поискеref. Дополнительную информацию оeq_refиrefсм. в Разделе 15.8.2, «Запрос EXPLAIN».
© 2025 Oracle
Licensed under the GPLv2 License.