sql >> Database teknologi >  >> RDS >> Oracle

Er der ydelsesforskel mellem concat vs || i orakel

Jeg konfigurerede et simpelt PL/SQL-script (nedenfor) for at prøve begge sammenkædningsmuligheder inden for en sløjfe 100 millioner gange hver. Resultatet for || var 142,93 sekunder og CONCAT var 144,11 sekunder. Uanset hvad, taler du om cirka 1,4 mikrosekunder pr. operation. Min konklusion er, at der ikke ser ud til at være nogen nævneværdig præstationsforskel.

Ud over at være mere læsbar, er || er ANSI-standarden for sammenkædningsoperatøren.

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;

Som en fodnote, Oracle siger dette om formålet med CONCAT funktion:



  1. SLET FRA AT HAVE COUNT(*) i MySQL

  2. Importfejl ved brug af Openrowset

  3. SQL:hvordan finder jeg ud af, om indholdet af en varchar-kolonne er numerisk?

  4. Hvordan kopierer man en række og indsætter i samme tabel med et autoincrement-felt i MySQL?