Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Czy istnieje różnica wydajności między concat a || w wyroczni

Ustawiłem prosty skrypt PL/SQL (poniżej), aby wypróbować obie opcje łączenia w pętli 100 milionów razy. Wynik dla || było 142,93 sekundy i CONCAT było 144,11 sekundy. Tak czy inaczej, mówimy o około 1,4 mikrosekundy na operację. Mój wniosek jest taki, że wydaje się, że nie ma żadnej znaczącej różnicy w wydajności.

Oprócz większej czytelności, || to standard ANSI dla operatora konkatenacji.

DECLARE
   i NUMBER;
   j NUMBER := 100000000;
   v VARCHAR2 (1000);
   v_start TIMESTAMP := SYSTIMESTAMP;
BEGIN
   FOR i IN 1 .. j LOOP
      v := DBMS_RANDOM.VALUE () || DBMS_RANDOM.VALUE ();
   END LOOP;    
   DBMS_OUTPUT.put_line ('1: ' || (SYSTIMESTAMP - v_start));
END;

DECLARE
   i NUMBER;
   j NUMBER := 100000000;
   v VARCHAR2 (1000);
   v_start TIMESTAMP := SYSTIMESTAMP;
BEGIN
   FOR i IN 1 .. j LOOP
      v := CONCAT (DBMS_RANDOM.VALUE (), DBMS_RANDOM.VALUE ());
   END LOOP;    
   DBMS_OUTPUT.put_line ('2: ' || (SYSTIMESTAMP - v_start));
END;

Jako przypis:Oracle mówi to o celu CONCAT funkcja:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zrzut importu programisty PL/SQL

  2. Jak wysłać dowolne parametry do wyzwalacza Oracle?

  3. Próbuję zrozumieć over() i partycjonowanie przez

  4. Jaka jest różnica między maską daty „yy” i „rr” Oracle?

  5. Przyspiesz operacje wstawiania zbiorczego dzięki NHibernate