sql >> Database >  >> RDS >> Oracle

Is er prestatieverschil tussen concat vs || in orakel

Ik heb een eenvoudig PL/SQL-script (hieronder) opgezet om beide aaneenschakelingsopties binnen een lus elk 100 miljoen keer te proberen. Het resultaat voor || was 142,93 seconden en CONCAT was 144,11 seconden. Hoe dan ook, je hebt het over ongeveer 1,4 microseconden per bewerking. Mijn conclusie is dat er geen noemenswaardig prestatieverschil lijkt te zijn.

|| . is niet alleen leesbaarder, is de ANSI-standaard voor de concatenatie-operator.

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;

Als voetnoot:Oracle zegt dit over het doel van de CONCAT functie:



  1. Kun je een webservice aanroepen vanuit TSQL-code?

  2. EXISTS vs JOIN en gebruik van de EXISTS-clausule

  3. Een tekenreeks converteren naar een mySql DECIMAL-type

  4. Dynamische selectieopties php en mysql