Saya menyiapkan skrip PL/SQL sederhana (di bawah) untuk mencoba kedua opsi rangkaian dalam satu lingkaran masing-masing 100 juta kali. Hasil untuk ||
adalah 142,93 detik dan CONCAT
adalah 144,11 detik. Either way, Anda sedang berbicara tentang kira-kira 1,4 mikrodetik per operasi. Kesimpulan saya adalah bahwa tampaknya tidak ada perbedaan kinerja yang berarti.
Selain lebih mudah dibaca, ||
adalah standar ANSI untuk operator rangkaian.
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;
Sebagai catatan kaki, Oracle
mengatakan ini tentang tujuan CONCAT
fungsi: