格納されているSQL Serverからの行や変数を返すために、どのようにうまくいけば、これは簡単です。私は約500以上の行を返すストアドプロシージャを最適化しています。私の計画は、取得する行がなくなるまでバッチで行を戻すことです。手順
例えば、私が買ってあげる行0-49 - そしてその後、50-99、100から149、というように..私は、次のSQLコードを使用して、これを達成しました
:
私はこのSPを実行するとCREATE PROCEDURE [dbo].[mySP]
@rowstart int,
@rowend int
AS
WITH MainQuery AS
(
HUGE SELECT STATEMENT HERE
)
select * from MainQuery where row between @rowstart and @rowend
、私は単にrowstartとrowendの値を渡すと、それは私が完璧にしたい行の範囲を返します。
問題は、私は、各クエリの後に取得するための複数の行があることを知ってほしい、です。 MainQueryブロックの完了後に@@ ROWCOUNTを返すことで達成できると思いますが、返される行の範囲を取得する方法と、SPを実行するたびに@@ ROWCOUNTの値を取得する方法がわかりません。
50行が返されるという初期クエリを返すと、503個のTOTALテーブル行があることがわかったら、簡単な数式(503/50)を実行して、何回呼び出しする必要があるかを把握できますSP。どんな助けもありがとう!
からそれをしたい場合は、これは、ページング方式の必要性である。このようなものでしょうか?つまり、必ずしも503行は必要ないでしょうか? –
"more"ボタンが当てはまるかどうかだけ知りたいのであれば、 'n'を表示したいときは' n + 1'行を要求することができます。あなたが得る 'のn + 1 'は、あなただけの最初の' N 'を示し、あなたがより多くのあることがわかっている場合は、あなたが 'n + 1 'よりも少なくなると、それらをすべて表示し、それ以上はないことを知っています。余分な行を取得するのは、結果セットを作成するための計算コストをすでに支払った後は、一般的にかなり安いです。 –