sql >> Databáze >  >> RDS >> Oracle

Existuje rozdíl ve výkonu mezi concat vs || v orákulu

Nastavil jsem jednoduchý skript PL/SQL (níže), abych vyzkoušel obě možnosti zřetězení v rámci smyčky 100 milionkrát. Výsledek pro || byla 142,93 sekund a CONCAT bylo 144,11 sekund. V každém případě mluvíte o zhruba 1,4 mikrosekundách na operaci. Můj závěr je, že se nezdá být žádný znatelný rozdíl ve výkonu.

Kromě toho, že je čitelnější, || je standard ANSI pro operátor zřetězení.

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;

Poznámka pod čarou:Oracle říká to o účelu CONCAT funkce:



  1. com.mysql.jdbc.MysqlDataTruncation:Zkrácení dat:Data jsou příliš dlouhá pro sloupec 'column_name'

  2. PG::ConnectionBad (FATAL:pg_hba.conf odmítá připojení pro hostitele 172.17.0.1, uživatel XXX, databáze XXX, SSL vypnuto):

  3. Jak extrahovat řetězec mezi dvěma speciálními znaky v mysql

  4. PHP:Stav online offline