У меня относительно дорогостоящий процесс, который требует «самостоятельного объединения», которое забивает мое время вычисления. Рассмотрим следующий сценарий:MySQL эффективное дублирование таблицы
CREATE TEMPORARY TABLE tempdb.table1
SELECT * FROM db.sometable WHERE {condition};
ALTER TABLE tempdb.table1 ADD INDEX idx_t({columns for join});
CREATE TEMPORARY TABLE tempdb.table2
SELECT * FROM tempdb.table1;
ALTER TABLE tempdb.table2 ADD INDEX idx_t({columns for join});
В этом случае мне необходимо вычислить индекс дважды, прежде чем я смогу попробовать присоединиться. Если я создам вторую таблицу с помощью оператора «LIKE», новая таблица будет создана с помощью структуры индексов, но все равно будет обрабатываться во время заполнения таблицы.
Есть ли способ полностью дублировать таблицу, индексы и все за один шаг? Это значительно сократило бы время вычисления, поскольку ему просто нужно было бы найти память для этой новой таблицы, а не для реорганизации большого количества вычислений. Как упоминалось в комментариях, это проблема, с которой я регулярно сталкиваюсь для различных приложений. Моя цель с этим вопросом заключается не в оптимизации конкретного приложения, а в получении информации об этой проблеме в целом.
Возможно, вы можете оптимизировать исходный запрос без создания временных таблиц. Вы должны задать другой вопрос и включить запрос, который хотите оптимизировать. –
@GordonLinoff Это проблема, с которой я сталкиваюсь часто, независимо от точного контекста. Поэтому меня больше интересует этот вопрос, чем некоторые общие подходы к оптимизации. – jameselmore
@jamesselmore. , , Интересно. Мне почти никогда не нужно создавать временные таблицы для оптимизации запросов. –