単一の SQL 列にリストを保存するべきですか、それともクエリを高速化するためにデータを正規化するべきですか?
Dec 17, 2024 am 10:31 AMSQL テーブルの "リスト" エントリの管理: クエリと正規化されたデータ
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 サイトの他の関連記事を参照してください。

人気の記事

ホットツール Tags

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?
