Oracle
 sql >> база данни >  >> RDS >> Oracle

Вмъкване на няколко реда в Oracle

От гледна точка на производителността, тези заявки са идентични.

UNION ALL няма да навреди на производителността, тъй като Oracle оценява UNION 'ed заявка само когато има нужда от нея, тя не кешира първо резултатите.

SELECT синтаксисът е по-гъвкав в този смисъл, че можете по-лесно да манипулирате SELECT запитайте, ако искате да промените нещо.

Например тази заявка:

insert into pager (PAG_ID,PAG_PARENT,PAG_NAME,PAG_ACTIVE)
          select 8000,0,'Multi 8000',1 from dual
union all select 8001,0,'Multi 8001',1 from dual

може да се пренапише като

INSERT
INTO    pager (PAG_ID,PAG_PARENT,PAG_NAME,PAG_ACTIVE)
SELECT  7999 + level, 0, 'Multi ' || 7999 + level, 1
FROM    dual
CONNECT BY
        level <= 2

Като замените 2 с подходящ номер можете да получите произволен брой редове.

В случай на INSERT ALL , ще трябва да дублирате описанието на таблицата на местоназначението, което е по-малко четливо, ако имате нужда, да речем, 40 редове.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвате аналитични функции в oracle (над разделяне по ключова дума)

  2. Функция SIGN() в Oracle

  3. Критерии за хибернация за дати

  4. Разделяне на низ, ограничен от тръбата, в колони?

  5. Най-добрият модел на дизайн за затваряне на връзката с базата данни, когато възникне изключение