sql >> データベース >  >> RDS >> Oracle

concatと||の間にパフォーマンスの違いはありますか?オラクルで

    ループ内で両方の連結オプションをそれぞれ1億回試行するために、単純なPL / SQLスクリプト(以下)を設定しました。 ||の結果 は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. SQL:カウントを行に保持するか、データベースからカウントを選択します

    2. MySQL1062-キー「PRIMARY」の重複エントリ「0」

    3. 自己満足は次のことにつながります:リスクが現実になる

    4. MySQLデータベースでTEXTフィールドを一意に保つための最良の方法