2011-08-15 7 views
0

私はデータベースにたくさんのレコードを持っており、それらのレコードをページングするコントロールを持っています。各ページのレコードを選択するにはどうすればよいですか?たとえば、51番目のレコードから100番目のレコードまでレコードを選択する必要があります。 LINQ式は使用できません。私はdataobjects 3.9を使用しています。 だから私はこのクエリdataobjects.netの各ページのレコードを選択

Query q = new Query("select SomeClass objects"); 

答えて

1

用途として起動:

Query q = new Query("select top 100 SomeClass objects"); 

は、私が覚えている限りでは、DO39の場合には.Skip様条件を指定する方法はありませんので、あなたはこれを手動で行う必要があります(例えば、あなたが持っている列挙体に.Skipを適用することによって)。

この場合、パフォーマンスに明らかな影響がありますが、計算の複雑さの面では必須ではありません。これの唯一の効果は、SQL Serverによってクライアントにさらに多くの行が送信されることですが、他のすべての行は同じままです。

この説明例:

あなたはあなたの結果の第千ページを表示するには、Googleを頼むよ場合、それはとにかく それらのそれぞれの一致ランクを計算し、あなたのクエリに関連するすべての文書を ありますがそれをソートすると、、少なくとも最初の1000のページが と一致し、一致するランクがとなり、このすべてのジョブの後で初めて、 1000番目のページが表示されます。

文書が1,000,000,000,000ある場合、クライアントに10K行を送信する計算量は、 と計算された は、他のすべてのジョブが実行された場合と比較して非常に小さいです。

また、ページングの全体的な考え方は、データセット全体のごく一部を示すことです。したがって、ユーザーがページめくりする必要がある場合などです。 1000ページ目、デザインに何か問題があります。ちょうど2つのケースがあります。

  • ユーザーがあり

(例えばバックアップを作成する)

  • ユーザーはすべてのデータを取得する必要があります(つまり、いくつかの検索を実行する)データのほんの一部を取得する必要があります中間的なケースはありません。

  • 関連する問題