2017-04-19 11 views
0

の順で使用して無限の時間がかかっている私は、それによって順序なしでそれを実行すると
SQLクエリは、以下

select top(10) ClientCode 
FROM (((Branch INNER JOIN BusinessLocation ON 
Branch.BranchCode=BusinessLocation.BranchCode) 
INNER JOIN Center ON BusinessLocation.LocationCode = Center.LocationCode) 
INNER JOIN Groups ON Center.CenterCode = Groups.CenterCode) 
INNER JOIN Client ON Groups.GroupCode = Client.GroupCode 
WHERE 
((Client.CBStatus) IS NULL) AND ((Branch.PartnerName) in 
('SVCL','Edelweiss')) 
order by Client.ClientCode DESC 

私のSQLクエリで細かい動作しますが、それによって順序で実行を終了されていません。なぜこの動作ですか?

+0

テーブルの大きさはどれくらいですか? Client.ClientCodeにインデックスがありますか? –

+0

レコード合計1324738、Client.ClientCodeのインデックスなし – Saurabh

+0

結合列にインデックスを追加します。 –

答えて

0

TOPステートメントを使用して選択すると、すべての行の計算と結合が必ずしも計算されるわけではありません。注文しようとすると、すべての行の少なくとも1つのセルを計算する必要があります。テーブルが大きく、動作に問題がないため、長いクエリです。 2番目のクエリの複雑さについて誤解を招くことによって、注文を行わずに実行中のクエリを実行させないでください。

クライアントコード列に索引を作成できます。それは物事をスピードアップします。

+0

これと試み、それでもewwwwwww CREATE非クラスタ化インデックス[clientcode_idx] ON [DBO] OFF(PAD_INDEX = WITH。[クライアント] ( \t [ClientCode] ASC )、STATISTICS_NORECOMPUTE = OFF、SORT_IN_TEMPDB = OFF、DROP_EXISTING = OFF、 ONLINE = OFF、ALLOW_ROW_LOCKS = ON、ALLOW_PAGE_LOCKS = ON)ON [PRIMARY] GO – Saurabh

関連する問題