2012-02-22 6 views
2

私は最初のアプリケーション(これはCMS)のXAF(DevExpressフレームワーク)を使用します。スケジューラコンポーネントがあります。 そして、xmlのようなイベントの再発を保存します。たとえば:データベースのxmlフィールドの解析を避ける

<RecurrenceInfo Start="02/21/2012 09:00:00" End="02/28/2012 11:30:00" Id="e8507496-2be9-4bde-90a6-9eeea98fdc5a" Range="2" /> 

これは、範囲の列挙型である(しかし、他のいくつかの列挙型が存在している):

public enum RecurrenceRange { 
     NoEndDate, 
     OccurrenceCount, 
     EndByDate 
    } 

はまた、私は別のアプリケーション(ASP.NET MVC)を持っています。特定の日付または期間(今日、明日、今月など)の選択イベントが必要です。

テーブルの中の問題は10000(たとえば)レコードになりますので、要求日のイベントを見つけるためにすべてを解析する必要があります。私はこれがパフォーマンスを低下させると思います。

どのような解決策がありますか?

私は次のことを行うと思います:イベントが(CMSで)作成された後、テーブルにいくつかの永続フィールドを追加し、プログラマチックにそれらを埋めてください。

このデータを格納するフィールドを作成する方がいいですか?

もう1つ質問があります。 たとえば、イベントは週の現在の5時と8時に表示されます。スケジューラは、テーブルに二つのレコードを作成します。

​​

スケジューラは1つの以上のレコードを作成することで問題とすべてのフィールドがRecurrenceInfo除いて等しいです。 私はもう1つのID列を作成し、同じ値にすべての重複レコードを割り当てると思います。

ありがとう、ごめんなさい、私の英語です。

答えて

2

あなたはXml typed columnを作り、RecurrenceInfoフィールドの型がnvarchar型であり、私はそれを変更することはできませんfolowingクエリ

select 
    (list of fields) 
from 
    MyTable 
where 
    MyXmlField.value('(/root[Start])', 'datetime') > '01.01.2001' 
+0

を使用することができます。 – user348173

+0

あなたはdriggerを追加してXML列を持つ別のテーブルにxmlを入れたり、XMLを解析してStart End datetime列 –