Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Apakah ada perbedaan kinerja antara concat vs || di oracle

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:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbarui kolom dengan nilai dari kolom lain

  2. Bagaimana cara menghitung jumlah nilai yang tidak berurutan dalam kolom menggunakan SQL?

  3. Tabel kueri dengan daftar variabel yang berbeda menggunakan like

  4. 5 Cara Memperbarui Data dengan Subquery di Oracle SQL

  5. MySQL:bagaimana melakukan keamanan tingkat baris (seperti Oracle's Virtual Private Database)?