ホームページ >データベース >mysql チュートリアル >主キーなしで SQLite テーブルから重複行を効率的に削除するにはどうすればよいですか?
冗長性の削除: SQLite データベースからの重複行の削除
SQLite3 データベース管理の領域では、データの整合性と効率を維持することが重要です。これには、不正確な結果やストレージ要件の肥大化につながる可能性がある重複行などの問題への対処が含まれることがよくあります。
それぞれの行に「ハッシュ」と「ハッシュ」の 2 つの列がある、3,600 万行で装飾された巨大なテーブルがあるシナリオを考えてみましょう。 「d」詳しく調べると、残念なことに、「hash」と「d」の両方が同じ値を保持する重複行が存在することに気づきました。同じ「d」値を共有する行は必ずしも重複を示しているわけではありませんが、一致する「ハッシュ」値についてはその逆が当てはまります。
このデータの冗長性に取り組むには、これらの重複行をパージする最も適切なアプローチを模索します。ただし、主キー列が存在しないため、タスクがさらに複雑になります。
ソリューションの詳細
行を効果的に区別するには、一意の列を活用することを検討してください。 rowid 列。SQLite データベースの各行に割り当てられる特別な識別子。私たちの目標は、「hash」と「d」の一意の組み合わせごとに最小の ROWID を持つ行を保持することです。
これを達成するには、次の SQL クエリを使用します。
delete from YourTable where rowid not in ( select min(rowid) from YourTable group by hash, d )
Thisこのコマンドは、「hash」と「d」の特定の組み合わせに関連付けられた最小ROWIDに対応しないROWID値を持つ行をターゲットにします。これらの冗長なエントリを削除することで、各一意のデータ ペアの最小 ROWID を維持しながら、テーブルの重複をクリーンアップできます。
重複の削除に関する結論
rowid 列を使用すると、SQLite3 テーブルから重複行を効率的に削除できるようになります。これにより、データの正確性が保護されるだけでなく、ストレージ要件も合理化され、最適なパフォーマンスとデータの整合性への道が開かれます。
以上が主キーなしで SQLite テーブルから重複行を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。