3

运行以下查询将返回 4 行。正如我在 SSMS 中看到的,返回行的顺序与我在 IN 子句中指定的顺序相同。

SELECT * FROM Table WHERE ID IN (4,3,2,1)

我可以说返回行的顺序总是与它们在 IN 子句中出现的顺序相同吗?

如果是,那么以下两个查询是否以相同的顺序返回行?(因为我测试过订单是一样的,但我不知道我是否可以相信这种行为)

SELECT TOP 10 * FROM Table ORDER BY LastModification DESC

SELECT * FROM Table WHERE ID IN (SELECT TOP 10 ID FROM Table ORDER BY LastModification DESC)

我问这个问题是因为我有一个非常复杂的选择查询。使用这个技巧给我带来了大约。就我而言,性能提升 30%。

4

1 回答 1

2

ORDER BY除非您使用子句,否则您不能保证记录按任何特定顺序排列。您可能会使用一些可能在某些时候起作用的技巧,但它们不会为您提供订单保证。

于 2013-10-31T10:52:08.933 回答