このクエリを考えてみてください:ROW_NUMBER()実行計画
SELECT num,
*
FROM (
SELECT OrderID, CustomerID, EmployeeID, OrderDate, RequiredDate,
ShippedDate,
ROW_NUMBER()
OVER(ORDER BY OrderID) AS num
FROM Orders
) AS numbered
WHERE NUM BETWEEN 0AND 100
私はこのクエリを実行し、実行計画を取得するとき、それはこのようなものだ:
私は
を知りたいです1)SQL Server 2008がクエリにROW_NUMBER()
を追加するために渡す手順は?
2)なぜ実行計画の最初のステップでClustered Index Scan
があるのですか?
3)なぜフィルタリングコストは2%ですか?私はなぜ適切なデータを取得するためにSQL Serverは、テーブルスキャンを実行しないのですか? ROW_NUMBER()
はインデックスを作成しますか?
なぜ私はいくつかの1つの投票-1または近くに投票!!!!この質問のどの部分が間違っていますか? – Arian
IMHOこれはローカライズされた*ではありません。これは、ほとんどのSQLプログラマが理解できる非常に簡単な例を使用する 'ROW_NUMBER()'の実行計画についての確かな質問です。 – Yuck
私は理解していません.ROW_NUMBER()はSQLプログラミングに属していませんか?ユーザーが理解できるようにするための例を示します。 – Arian