特定の条件に達した後に実行を停止または停止できるSQL Server 2016クエリを開発することは可能ですか?カウントに基づいてSQLクエリを停止する
SELECT
ステートメントから返された別個のレコードの数が10K未満の場合にのみデータを返すストアドプロシージャを開発しました。したがって、プロシージャは最初に異なる値のカウントを取得し、次にSELECT
文を実行して、実際のデータを取得して戻します。カウントが10Kを超えて戻った場合、実際のデータをフェッチするためにクエリを再度実行する代わりに、単にカウントを返すだけです。
テーブルには、特定の入力パラメータに対して、8000万レコード近くの実績があり、結果のレコード数が10K未満の場合は10-15秒で結果が返されます。
特定の入力パラメータの場合、手続きは4〜5分近く実行され、出力として約15-20,000,000を返します。
私は10001番目のレコードに達するとすぐにカウントクエリを停止する方法を探しています。私はあなたが一時的に使用することを示唆している
DECLARE @Count BIGINT
SELECT @Count = COUNT(DISTINCT ZIP)
FROM dbo.Member (NOLOCK)
WHERE FirstName = @FirstName
IF @Count < 10001
BEGIN
SELECT *
FROM dbo.Member
WHERE FirstName = @FirstName
END
ELSE
BEGIN
SELECT @Count --When Count is greater than 10K, returns just count
END
おかげ
このような意味がありますか?SELECT TOP 10000 column_name FROM table_name WHERE条件; ?それとも私が見ていない別の問題がありますか? – koksalb
'MemberNumber'は本当に複製されていますか? –
@Koksalbプロシージャは、SELECTクエリが10K未満のレコードを返す場合にのみデータを返します。 10Kを超えるレコードがある場合、プロシージャはデータを返さず、単にカウントを返し、データは返しません。 TOPキーワードは私の場合は助けにならないでしょう。 – Sharmi