2011-07-27 18 views
0

私はASP.NET MVC3 C#4.0プロジェクトを持っています。jsonをmysqlデータベースに保存する

これはPerson型のオブジェクトを管理し、実際にはMySQLデータベースのpersonという名前のDataTableに保存しています。

このプロジェクトには、キーワードフルテキストデータテーブルの人物を検索する検索エンジンがあります。 人に対応するIDを取得した後、GetPerson(id)を実行するロジックがありますが、これによってpersonテーブルへのクエリが作成され、このクエリとオブジェクトPersonの作成が​​遅くなります。

Person in dataテーブルの横に保存すると、そのPersonオブジェクトの完全なjson文字列を持つ別のカラムがありますか?その後、GetPerson(id)はjson文字列だけを取得し、次にSerializeを実行すると、私はPersonオブジェクトを取得しますか?

これは良い方法ですか?

+0

GetPerson(id)のコードとそれが遅いコンテキストのコードスニペットを投稿できますか?それは単に最適化する必要があるかもしれません。シリアル化されたオブジェクトのフォームを格納することは冗長であり、SQL更新コマンドの数を2倍にする必要があります(フィールドが変更されるたびにJSONを更新する必要があります)。 –

答えて

2

これはちょっと混乱します.Jsonをデータベースに保存し、フルテキスト検索を実行したいのですか?なぜあなたがこれをしたいと思うのか分かりません。 jsonフィールドにあるフィールドと相関関係があるテーブルをデータベースに作成し、新しいjsonリクエストでテーブルを更新するのはなぜでしょうか。したがってJSONに(name、phonenumber、...)が含まれていれば、テーブルにnameが存在するかどうかをチェックできます。そうでなければ、新しい人をテーブルに挿入することができます。たぶん私はちょうどこれを間違って読む。

+0

いいえ、全文検索はキーワードテーブルにあります。 jsonの文字列は、GetPerson(id)のためにのみ使用されます。私はそのidでJSON文字列を取得し、それをPersonオブジェクトとしてセリアライズすれば高速になると思います。 –

+0

しかし、あなたは人のものを検索/並べ替え/何でもしたいと思っているのを知っています。 – n8wrl

+0

これははるかに高速でより最適化されたアプローチです – Haroon

関連する問題