Tôi thiết lập một tập lệnh PL / SQL đơn giản (bên dưới) để thử cả hai tùy chọn nối trong vòng lặp 100 triệu lần mỗi tùy chọn. Kết quả cho ||
là 142,93 giây và CONCAT
là 144,11 giây. Dù bằng cách nào, bạn đang nói về khoảng 1,4 micro giây cho mỗi hoạt động. Kết luận của tôi là dường như không có bất kỳ sự khác biệt đáng kể nào về hiệu suất.
Ngoài việc dễ đọc hơn, ||
là tiêu chuẩn ANSI cho toán tử nối.
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;
Dưới dạng chú thích cuối trang, Oracle
nói điều này về mục đích của CONCAT
chức năng: