SQL время запроса - PullRequest
       18

SQL время запроса

0 голосов
/ 10 июля 2020

Требуется ли больше времени для создания таблицы с помощью оператора select as или просто для запуска оператора select? Разница во времени слишком велика или ею можно пренебречь?

Например, между

create table a
as select * from b
where c = d;

и

select * from b
where c = d;

какой из них должен работать быстрее и может ли разница во времени пренебречь?

1 Ответ

2 голосов
/ 10 июля 2020

Создание таблицы займет больше времени. Есть еще накладные расходы. Если вы посмотрите на метаданные своей базы данных, вы найдете множество таблиц или представлений, содержащих информацию о таблицах. В частности, необходимо сохранить имена таблиц и столбцов.

Тем не менее, обработка данных очень похожа. Однако могут возникнуть накладные расходы при хранении набора результатов в постоянном хранилище, а не в структурах данных, необходимых для набора результатов. Фактически, результирующий набор может никогда не храниться «на диске» (т. Е. Постоянно). Но при создании таблицы это необходимо.

В зависимости от базы данных два запроса также могут быть оптимизированы по-разному. Запрос SELECT можно оптимизировать, чтобы как можно быстрее возвращать строку первую . Запрос CREATE может быть оптимизирован для максимально быстрого возврата всех строк. Кроме того, SELECT может выглядеть быстрее, если ваша база данных и интерфейс начнут возвращать строки при их первом появлении.

Я должен отметить, что в большинстве случаев накладные расходы могут быть незаметны. Но вы можете получить другие ошибки с оператором create table, которые вы не получите с помощью только select. Например, таблица может уже существовать. Или повторяющиеся имена столбцов могут представлять проблему (хотя некоторые базы данных также не допускают повторяющиеся имена столбцов в наборах результатов).

...