ホームページ >データベース >mysql チュートリアル >主キーなしで SQLite テーブルから重複行を効率的に削除するにはどうすればよいですか?

主キーなしで SQLite テーブルから重複行を効率的に削除するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-05 12:32:44745ブラウズ

How to Efficiently Remove Duplicate Rows from an SQLite Table Without a Primary Key?

冗長性の削除: 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。