English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
О производных таблицах
Когда в главном запросе содержится производная таблица, или когда в операторе SELECT содержится предложение UNION, или когда в операторе SELECT содержится предложение ORDER BY для одного поля (и предложение GROUP BY для другого поля), MySQL автоматически создает временные таблицы для хранения временных результатов запроса, эти временные таблицы создаются и обслуживаются MySQL, и становятся автоматическими временными таблицами. Для автоматически созданных временных таблиц, так как производительность памяти временных таблиц лучше, MySQL всегда сначала использует временные таблицы в памяти, а когда временные таблицы в памяти становятся слишком большими, достигая某个 порога, они сохраняются во внешнюю память временные таблицы. То есть, внешние временные таблицы являются расширением временных таблиц в памяти. Порог сохранения временных таблиц в внешнюю память определяется минимальным значением переменных системы max_heap_table_size и tmp_table_size.
Производные таблицы обычно используются в подзапросах FROM. Например:
select * from (select * from table) as t;
О временных таблицах
Когда вы работаете с очень большими таблицами, иногда вам может потребоваться выполнять множество запросов, чтобы получить малую подмножество данных, а не выполнять эти запросы на всю таблицу, лучше использовать MySQL для нахождения необходимых нескольких записей, выборку этих записей в временную таблицу может быть быстрее, а затем выполнять запросы на этих таблицах.
Создание временной таблицы легко, добавьте ключевое слово TEMPORARY к стандартному оператору CREATE TABLE:
Создание временной таблицы tmp_table ( name VARCHAR(10) NOT NULL, value INTEGER NOT NULL )
Временная таблица существует в течение всего времени вашего подключения к MySQL. Когда вы разрываете соединение, MySQL автоматически удаляет таблицу и освобождает занятые ресурсы. Конечно, вы можете удалить таблицу и освободить ресурсы, оставаясь подключенным.
DROP TABLE tmp_table
Если при создании временной таблицы с именем tmp_table таблица с таким именем уже существует в базе данных, временная таблица должна быть скрыта (скрыта) от не временной таблицы tmp_table.
Если вы объявите временную таблицу как таблицу HEAP, MySQL также позволяет вам создать ее в памяти:
Создание временной таблицы tmp_table ( name VARCHAR(10) NOT NULL, value INTEGER NOT NULL ) ТИП = HEAP
Поскольку таблицы HEAP хранятся в памяти, ваши запросы к ним могут быть быстрее, чем к временным таблицам на диске. Однако, таблицы HEAP отличаются от обычных таблиц и имеют свои ограничения. См. справочник MySQL для получения дополнительной информации.
Как и было рекомендовано ранее, вы должны протестировать временные таблицы, чтобы проверить, действительно ли они быстрее, чем выполнение запросов на больших объемах данных в базе данных. Если данные хорошо индексированы, временные таблицы могут быть не такими быстрыми.
1. После разрыва соединения с MySQL временные таблицы будут автоматически удалены из системы, но это ограничивается таблицами, созданными следующим образом:
Определение полей:
Создание временной таблицы tmp_table ( name VARCHAR(10) NOT NULL, value INTEGER NOT NULL )
2) напрямую импортировать результаты запроса в временную таблицу
Создание временной таблицы tmp_table SELECT * FROM table_name
2. Кроме того, MySQL также позволяет вам напрямую создавать временные таблицы в памяти, так как они хранятся в памяти, они будут очень быстры, синтаксис следующий:
Создание временной таблицы tmp_table ( name VARCHAR(10) NOT NULL, value INTEGER NOT NULL ) ТИП = HEAP
3. Из анализа выше можно看出, данные временных таблиц будут очищены, если вы разорвите соединение, но в вашем программном обеспечении не может быть каждого выполнения SQL, чтобы подключиться к базе данных (если бы это было так, то у вас могли бы возникнуть проблемы, которые вы担心, если нет, то нет проблем), потому что данные временных таблиц будут очищены только при разрыве соединения с базой данных, и система не будет автоматически очищать данные временных таблиц при многократном выполнении SQL в одном соединении с базой данных.
Заявление: содержимое этой статьи взято из Интернета, авторские права принадлежат соответствующему автору. Контент предоставлен пользователями Интернета, загружен самостоятельно, сайт не имеет права собственности, не был отредактирован вручную и не несет ответственности за соответствующие юридические вопросы. Если вы обнаружите контент,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма замените # на @), и предоставьте соответствующие доказательства. Если будет установлено, что контент нарушает права на интеллектуальную собственность, сайт немедленно удалят涉嫌侵权的内容。