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 で「リスト」列を使用することは、ベスト プラクティスに反します。
正規化の利点は次のとおりです。
データを正規化することで、重複エントリを削除し、テーブル間の関係を作成することでパフォーマンスをさらに向上させることができ、より複雑で効率的なクエリが可能になります。 .
以上が単一の SQL 列にリストを保存するべきですか、それともクエリを高速化するためにデータを正規化するべきですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。