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

INSERTおよびUPDATE操作でインデックスはいつどのように使用されますか?

    UPDATEステートメントの場合、オプティマイザーがインデックスを高速化できると判断した場合、インデックスを使用できます。インデックスは、更新する行を見つけるために使用されます。インデックスは、ある意味ではテーブルでもあるため、インデックス付きの列が更新される場合は、明らかにインデックスも更新する必要があります。一方、WHERE句なしで更新を実行している場合、オプティマイザーはテーブル全体にアクセスする必要があるため、インデックスを使用しないことを選択する可能性があります。全表スキャンの方が効率的です(ただし、インデックスを更新する必要がある場合があります)。 )。オプティマイザーは、問題のテーブルとインデックスに対して有効な統計があるかどうか、影響を受けるデータの量、ハードウェアの種類など、いくつかのパラメーターに基づいて実行時にこれらの決定を行います。

    INSERTステートメントの場合、INSERT自体はインデックスを必要としませんが、インデックスも「挿入」する必要があるため、Oracleからアクセスする必要があります。 INSERTによってインデックスが使用される可能性がある別のケースは、次のようなINSERTです。

    INSERT INTO mytable (mycolmn)
    SELECT mycolumn + 10 FROM mytable;
    


    1. 関数(SQL Server)内で動的SQLを実行するとエラーが発生しますか?

    2. mysqlのmax(length(field))

    3. postgresqlで日付を整数に変換します

    4. トランザクション内でautocommit=0を設定すると、何かが行われますか?