SQLite データベースの重複行の特定と削除
データベース レコード内で重複が発生する可能性があり、データの整合性を維持し、パフォーマンスを最適化する際に課題が生じます。このシナリオには、「hash」 (テキスト) と「d」 (実数) の 2 つの列を持つ大規模な SQLite3 テーブルが含まれており、一部の行では両方の列に重複した値が示されています。目的は、一意の行を保持しながら、これらの重複行を効率的に削除することです。
提供されるソリューションでは、SQLite の一意の rowid 列を利用して行を区別します。以下のクエリは、「hash」値と「d」値の一意の組み合わせごとに最小の ROWID 値を保持することで重複行をターゲットにして削除します。
delete from YourTable where rowid not in ( select min(rowid) from YourTable group by hash , d )
このクエリは、最初に個別の組み合わせごとに最小 ROWID を識別することで動作します。サブクエリによる「hash」値と「d」値。 「min(rowid)」関数は、同一の「hash」と「d」のペアのグループごとに最小のROWIDを抽出します。その後、メインクエリは 'rowid not in' 句を利用して、ROWID がそれぞれの 'hash' 値と 'd' 値の最小 ROWID に対応しない行を削除します。
このアプローチを利用することで、クエリは、テーブル内の一意のデータを維持しながら、重複行を効率的に識別して削除します。 ROWID列を一意の識別子として使用すると、迅速かつ効果的な削除プロセスが促進され、データの正確性が保証され、将来の操作に向けてデータベースのパフォーマンスが最適化されます。
以上がSQLite データベース内の重複行を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。