顧客間の支払いを追跡するデータベースを想像してみてください。
Customer テーブルがあるとします。
Customer
----------
CustomerID
Name
およびトランザクション テーブル
Transaction
------------
BuyerID
SellerID
Amount
BuyerID と SellerID はどちらも、Customer テーブルの CustomerID 列への外部キー参照です。
私の現在の (類似の) 状況では、Customer テーブルは小さい (2000 行) にもかかわらず、Transaction テーブルは大きい (5 億行) です。ただし、Customer テーブルから行を削除するには、非常に長い時間がかかります。これは、データベースが Transaction テーブルをスキャンして、Customer に参照トランザクションがあるかどうかを確認する必要があるためです (実際には、2 回実行する必要があります。1 回は BuyerID を確認するためです)。もう 1 つは SellerID 用です)。Transaction テーブルは、BuyerID または SellerID のいずれにもインデックスが作成されていません (実際のテーブルは、Buyer、Seller、およびその他のいくつかの列の組み合わせに基づいてインデックスが作成されています)
すべての外部キー制約を削除し、行を削除してから、制約を再度追加できることを知っています。DELETE FROM
外部キーを有効にして実行するよりも速くなりますか? 私が見逃している削除操作を高速化する他の方法はありますか。