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

Има ли разлика в производителността между concat срещу || в оракул

Настроих прост PL/SQL скрипт (по-долу), за да изпробвам и двете опции за конкатенация в рамките на цикъл 100 милиона пъти всяка. Резултатът за || беше 142,93 секунди и CONCAT беше 144,11 секунди. Така или иначе, вие говорите за приблизително 1,4 микросекунди на операция. Моето заключение е, че не изглежда да има някаква осезаема разлика в производителността.

Освен че е по-четлив, || е стандартът ANSI за оператора за конкатенация.

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;

Като бележка под линия, Oracle казва това за целта на CONCAT функция:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Java - JDBC executeUpdate() не работи

  2. Oracle SQL пълна йерархия, дадена на всеки възел като вход

  3. DBMS_LOB.SUBSTR() хвърля твърде малък буфер на символен низ

  4. Oracle SQL Query за извличане на конкретно събитие, използвайки конкретно условие в xpath?

  5. Променете компонента на часовата зона на TIMESTAMP WITH TIMEZONE в Oracle