Here's a fun one: a simple query that runs faster with an ORDER BY clause than without one. Shouldn't happen, should it?Here's the set up:CREATE TABLE RowNumberTest ( k1 int NOT NULL, k2 int NOT NULL, v varchar(1000), PRIMARY KEY CLUSTERED (k1 ASC, k2 ASC))SET NOCOUNT ONBEGIN TRANSACTIONDECLARE @k1 int, @k2 intSET @k1 = 1WHILE @k1 <= 1000BEGIN SET @k2 = 1 WHILE 1 = 1 BEGIN INSERT INTO RowNumberTest SELECT @k1, @k2, REPLICATE('a', CAST(FLOOR(RAND()*1000) AS int)) SET @k2 = @k2 + 1 IF RAND() < 0.02 BREAK END SET @k1 = @k1 + 1ENDCOMMIT TRANSACTIONSET NOCOUNT OFFSELECT COUNT(*) AS "row count"FROM RowNumberTest--SELECT ct, COUNT(*) AS occurs--FROM (-- SELECT k1, COUNT(*) AS ct-- FROM RowNumberTest-- GROUP BY k1-- ) AS A--GROUP BY ct--ORDER BY ctGOSET SHOWPLAN_TEXT ONGOSELECT *, ROW_NUMBER() OVER (PARTITION BY k1 ORDER BY k2 ASC) AS rFROM dbo.RowNumberTestSELECT *, ROW_NUMBER() OVER (PARTITION BY k1 ORDER BY k2 DESC) AS rFROM dbo.RowNumberTestSELECT *, ROW_NUMBER() OVER (PARTITION BY k1 ORDER BY k2 DESC) AS rFROM dbo.RowNumberTestORDER BY k1 DESC, k2 DESCGOSET SHOWPLAN_TEXT OFFGO--DROP TABLE RowNumberTestAnd here's the result (SQL Server 2005 sp2, Standard Edition):row count-----------49867(1 row(s) affected)StmtText------------------------------------------------------------------------------------------------SELECT *, ROW_NUMBER() OVER (PARTITION BY k1 ORDER BY k2 ASC) AS rFROM dbo.RowNumberTest(1 row(s) affected)StmtText--------------------------------------------------------------------------------------------------------------------------------- |--Sequence Project(DEFINE:([Expr1003]=row_number)) |--Compute Scalar(DEFINE:([Expr1005]=(1))) |--Segment |--Clustered Index Scan(OBJECT:([tempdb].[dbo].[RowNumberTest].[PK__RowNumberTest__1B0B69D3]), ORDERED FORWARD)(4 row(s) affected)StmtText------------------------------------------------------------------------------------------------SELECT *, ROW_NUMBER() OVER (PARTITION BY k1 ORDER BY k2 DESC) AS rFROM dbo.RowNumberTest(1 row(s) affected)StmtText---------------------------------------------------------------------------------------------------------------------------------------------- |--Sequence Project(DEFINE:([Expr1003]=row_number)) |--Compute Scalar(DEFINE:([Expr1005]=(1))) |--Segment |--Parallelism(Gather Streams, ORDER BY:([tempdb].[dbo].[RowNumberTest].[k1] ASC, [tempdb].[dbo].[RowNumberTest].[k2] DESC)) |--Sort(ORDER BY:([tempdb].[dbo].[RowNumberTest].[k1] ASC, [tempdb].[dbo].[RowNumberTest].[k2] DESC)) |--Clustered Index Scan(OBJECT:([tempdb].[dbo].[RowNumberTest].[PK__RowNumberTest__1B0B69D3]))(6 row(s) affected)StmtText--------------------------------------------------------------------------------------------------------------------------SELECT *, ROW_NUMBER() OVER (PARTITION BY k1 ORDER BY k2 DESC) AS rFROM dbo.RowNumberTestORDER BY k1 DESC, k2 DESC(1 row(s) affected)StmtText---------------------------------------------------------------------------------------------------------------------------------- |--Sequence Project(DEFINE:([Expr1003]=row_number)) |--Compute Scalar(DEFINE:([Expr1005]=(1))) |--Segment |--Clustered Index Scan(OBJECT:([tempdb].[dbo].[RowNumberTest].[PK__RowNumberTest__1B0B69D3]), ORDERED BACKWARD)(4 row(s) affected)