SQL Server:使用 IN 子句时返回的行顺序



运行以下查询将返回 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% 的性能提升。

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

相关内容

  • 没有找到相关文章

最新更新