62

json_encodedデータベースに文字列を保存する予定です。長さは正確にはわかりませんが、かなり長いと思います。私の懸念は、これにどのフィールドタイプを使用するかということblobですtext

高速検索よりもできるだけスペースを節約できるものを好みますが、いずれにせよ、インデックスを作成する必要がある他の列があります。

4

2 に答える 2

56

MySQLのドキュメントに記載されているように、5.7.8 以降、ネイティブの JSON データ型がサポートされています。

JSON データ型には、JSON 形式の文字列を文字列列に格納するよりも次の利点があります。

  • JSON 列に格納された JSON ドキュメントの自動検証。無効なドキュメントはエラーを生成します。
  • 最適化されたストレージ形式。JSON 列に格納された JSON ドキュメントは、ドキュメント要素への迅速な読み取りアクセスを可能にする内部形式に変換されます。サーバーが後でこのバイナリ形式で保存された JSON 値を読み取る必要がある場合、値をテキスト表現から解析する必要はありません。バイナリ形式は、サーバーがサブオブジェクトまたはネストされた値をキーまたは配列インデックスによって直接検索できるように構造化されており、ドキュメント内のそれらの前後のすべての値を読み取る必要はありません。

そのため、MySQL のドキュメントに記載されているように、テキストではなく JSON データ型を使用する必要があります。

于 2015-12-28T10:59:27.907 に答える
42

blob通常、画像、バイナリなどのためのものです。textあなたのケースには十分なはずです。または、それがlongtext本当に懸念される場合は、さらに大きなスペース容量を持つものを使用できます。

検索に関しては、json_encode'd のものを保存json_decodeしているため、アプリケーションで役立つようにするためにとにかくそれを呼び出す必要があります。この場合、データ型の選択は重要ではないと思います。

より良い方法は、関連するものを json の 1 つの大きな文字列に格納するのではなく、データベースの設計を正規化することです。

于 2012-04-18T03:11:37.203 に答える