ホームページ >データベース >mysql チュートリアル >単一の SQL 列にリストを保存するべきですか、それともクエリを高速化するためにデータを正規化するべきですか?

単一の SQL 列にリストを保存するべきですか、それともクエリを高速化するためにデータを正規化するべきですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-17 10:31:26378ブラウズ

Should I Store Lists in a Single SQL Column or Normalize My Data for Faster Queries?

SQL テーブルの "リスト" エントリの管理: クエリと正規化されたデータ

SQL テーブルを使用する場合、データを「リスト」エントリを含む単一行、またはエントリごとに個別の行。この質問では、特定のユースケースのクエリ時間の観点からどのアプローチがより効率的であるかを検討します。

「List」エントリを使用した現在のアプローチ

質問者には既存の SQLite があります。次のような行を含むテーブル:

value, "a,b,c,d,e,f,g,h,i,j", value3, value4

ここで、クエリは次を使用して「value」と「%b%」のペアを検索します。 LIKE 演算子。

正規化されたデータを使用した提案されたアプローチ

クエリの効率を向上させるために、投稿者は、各行が順列を表す新しいテーブルを作成することを提案しています。

value, a, value3, value4
...
value, j, value3, value4

クエリでは、「=」演算子を使用して「value」を検索し、 "b."

正規化の利点

この質問に対する答えでは、正規化されたテーブル構造を使用することを強くお勧めします。これは、LIKE '%something%' クエリではインデックスを利用できないため、検索時間が遅くなることが原因です。さらに、RDBMS で「リスト」列を使用することは、ベスト プラクティスに反します。

正規化の利点は次のとおりです。

  • インデックスを使用したクエリの高速化
  • 「CSV」列の削除アンチパターン
  • データの整合性と柔軟性の向上

データを正規化することで、重複エントリを削除し、テーブル間の関係を作成することでパフォーマンスをさらに向上させることができ、より複雑で効率的なクエリが可能になります。 .

以上が単一の SQL 列にリストを保存するべきですか、それともクエリを高速化するためにデータを正規化するべきですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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