2011-06-20 14 views
0

私はまだprevious questionに回答を投稿できないので、新しい投稿を開くことにしました。その記事のコードを使って作業するには、RequestOptionsというテーブルにそれぞれヒントWITH (... , INDEX (IX_REQUESTID))WITH (... , INDEX (IX_REQUESTIDREF))を追加する必要がありました。 SQL Serverは、今は正しく機能するため、使用するインデックスを見つけることができなかったようです。しかし、今問題は他です...私は文ORDER BY Priority, DateEnteredの文に追加し、RequestTable(Priority, DateEntered) INCLUDE (RequestID)のインデックスがあるにもかかわらず、Query2は何も結果を返しません...何が間違っている可能性がありますか?これは本当に重要なことなので、私を助けてください。答えは自分では分かりません。複数の結合でオーダーする

答えて

1

私が気づいていない要件がさらにあるかもしれませんが、コードがあるレベルの複雑さになると、私はたいてい立ち返り、自分自身に質問します。

この場合、Requestテーブルだけでクエリを実行し、返された値をtablevarに格納することはできませんか?

トランザクション分離レベルシリアライザブルを設定して、必要な行をロックする必要があります。確かに - と一緒に試してみる必要があります。ロックされた行と今

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE 

DECLARE @TempResults TABLE (RequestID int, Priority int, DateEntered DateTime) 

INSERT INTO @TempResults (RequestId, Priority, DateEntered) 
SELECT TOP 2 RequestId, Priority, DateEntered FROM Request WITH (ROWLOCK, UPDLOCK, READPAST) 
ORDER BY Priority, DateEntered 

は、結果セットあなたが必要と返すようにtablevarとオプションのテーブル間の結合します。

SELECT * FROM @TempResults Request INNER JOIN Options ON Request.RequestID = Options.RequestIDRef 

これはオプションではない場合はお詫び申し上げます。