私は実行するために10秒かかっている(下記)を実行しようとしたSQLクエリを持っている、そしてそれは、本番環境にあったので、私はちょうどに行く何のSQLのロックがないことを確認することを停止しこれらのクエリの1つを高速化するには?
SELECT TOP 1000000 *
FROM Table T
Where CONVERT(nvarchar(max), T.Data) like '%SearchPhrase%' --T.Data is initially XML
今私が作成時間(私はインデックスだとは思わない)で注文を追加すると、2秒かかるので完了です。
SELECT TOP 1000000 *
FROM Table T
Where CONVERT(nvarchar(max), T.Data) like '%SearchPhrase%' --T.Data is initially XML
order by T.CreatedOn asc
今キッカーは約行がさえTOP 1000000
と、それはそれはまだ、すべての行を起こっている行に短い停止されていないことを私に語った、返されるということです。
SQLサーバーの仕組みとクエリ解析の仕組みを基本的に理解していますが、このような状況で注文がどうして早くなるのかがわかりません。
サーバーであることの実行には、SQL Serverが並列プランを使用するため、追加のソート操作は、この場合には明らかに十分であるSQLサーバー2008 R2
それぞれのクエリから 'EXPLAIN PLAN'を見て、その違いがどういうものかを見てください。 –
2つの結果は常に10秒と2秒で返されますか? – Kane
@ケーンそれはそこそこです。私はサーバーにリソースをロックアウトさせたくないので、実際に最初のものを終了させない** EDIT **最初のものを完全に実行させ、20秒かかった(2回続けて20回) –