Яке твердження є кращим? Залежить від того, що ти робиш.
Чи є інші наслідки для продуктивності? Якщо таблиця є постійною таблицею, ви можете створювати індекси під час створення таблиці, що має наслідки для продуктивності як негативно, так і позитивно. Вибір у не відтворює індекси, які існують у поточних таблицях, і, отже, подальше використання таблиці може бути повільнішим, ніж потрібно.
Який вигідний варіант використання SELECT ... INTO over INSERT INTO ...? Вибрати в використовується, якщо ви, можливо, не знаєте структури таблиці заздалегідь. Писати швидше, ніж створювати таблицю та оператор вставки, тому він використовується для прискорення розробки в рази. Це часто швидше використовувати, коли ви створюєте швидку таблицю темпів для тестування речей або резервної таблиці певного запиту (можливо, записи, які ви збираєтеся видалити). Потрібно рідко бачити його, що використовується у виробничому коді, який буде працювати декілька разів (за винятком тимчасових таблиць), оскільки він вийде з ладу, якщо таблиця вже була.
Іноді його використовують неналежно люди, які не знають, що роблять. І в результаті вони можуть спричинити хаос. Я настійно вважаю, що невірно використовувати SELECT INTO для чогось іншого, крім таблиці, що викидається (тимчасова резервна копія, тимчасова таблиця, яка піде в кінці збереженої програми тощо). Постійні таблиці потребують реальної роздуми щодо їх дизайну, а SELECT INTO дозволяє легко не думати про що-небудь навіть таке базове, як колони та які типи даних.
Взагалі я віддаю перевагу використанню таблиці створення та вкладенню оператора - у вас більше елементів керування, і це краще для повторюваних процесів. Далі, якщо таблиця є постійною таблицею, вона повинна бути створена з окремого скрипта створення таблиці (такий, який знаходиться в контролі джерела), оскільки створення постійних об'єктів, як правило, не має в коді вставляти / видаляти / оновлювати або вибирати з стіл. Зміни об'єкта слід обробляти окремо від змін даних, оскільки об'єкти мають наслідки, що перевищують потреби певного вставки / оновлення / вибору / видалення. Вам потрібно розглянути найкращі типи даних, продумати обмеження FK, ПК та інші обмеження, розглянути вимоги до аудиту, продумати індексацію тощо.
INSERT INTO
має дві ключові слова (виберіть і введіть) прямо вперед, які повідомляють світові, що це не звичайний оператор SQL, аSELECT ... INTO
принаймні починає виглядати як звичайний оператор SQL. Невелика причина віддати перевагу першим.