デザインが悪いため、データベースをクリーンアップする必要があります。正しく接続されていないデータがあります(外部キーが設定されていません)。 したがって、参照されていないすべてのデータを削除します。 私は、一時テーブルtemp1
に参加し、メインテーブルentity
に接続していないEntity_ID
をすべて挿入しました。次のステップは、私は、クエリ以下でentityisactive
すべての悪いデータから削除する、次のとおりです。データベースから参照されていないデータを削除する
Delete from db1.entityisactive where db1.entityisactive.Entity_ID IN
(
Select db1.temp1.Entity_ID from db1.temp1
)
問題は、私はSelect db1.temp1.Entity_ID from db1.temp1 where Entity_ID = 42
私が欲しいことを行うとき、私はまた、接続時間を出て、ありますすべてのエントリを削除するentityisactive
entityisactive.Entity_ID = temp1.Entity_ID
どのようにSQLクエリを高速化できますか?または私の推論の誤りはどこですか?
インデックスを作成してNOT INを使用することはできますが、NOT INは大して危険です。 – Drew
内部クエリの結果の数を制限し、何も削除されなくなるまで複数回実行してください。 'Select db1.temp1.Entity_ID db1.temp1からLIMIT 1000' – alfasin
の危険性はありません:http://stackoverflow.com/a/32175659 – Drew