使用索引排序
回答
是的,由于聚簇索引,数据显示为预排序。聚集索引意味着这些行按照索引的顺序进行物理排列,这在大多数情况下(并非全部)都是如何检索的。
如果没有聚集的索引,那么将按照它们插入的顺序检索行。
不,这不依赖于此。如果您决定执行
JOIN
,DISTINCT
或对查询进行任何其他更改,则可以轻松地拆分排序顺序。另一方面,如果您使用的是ORDER BY
,并且SQL Server知道数据已经按照该顺序排列,那么它将优化冗余排序,因此无需花费任何代价。因此,总是
ORDER BY
,即使它看起来你不需要它。
有关MSDN上聚簇索引的文章 http://msdn.microsoft.com/en-us/library/aa933131%28SQL.80%29.aspx – keith 2010-01-19 04:51:29
如果你需要一个特定的排序顺序最好的做法是使用ORDER BY
子句指定。
尽管没有ORDER BY
子句,但几乎所有的数据库实现都使用了我曾经使用的数据库实现,但它的行为是数据库如何工作的副作用。事实是,数据库(同样是我工作过的)不能保证排序的顺序,除非你指定它,所以没有指定它,你会受到数据库实现和任何副作用的制约。基本上,如果您需要以完全可预测的方式返回记录,则应指定它。
我的查询返回的查询结果似乎排序,虽然没有可用的语句顺序。
这是因为数据是基于插入数据的顺序返回的。为了保证订单始终保持一致,您需要定义一个ORDER BY
条款。
索引可以加快查询排序的速度,但如果没有使用带索引的列的ORDER BY子句,则索引不会产生影响。
除非您使用ORDER BY,否则不能依赖您获得结果的顺序。我猜这取决于你的数据库,但是当你需要的时候指定一个订单总是最佳实践。
无论其他细节如何,只要您关心SQL查询的结果顺序,唯一可以做的就是包含ORDER BY子句以确保您获得所需的订单。作为替代方法,您可以(当然)随机检索并稍后进行排序 - 但使用SQL来完成这项工作通常是一个更好的主意。主要的例外是如果你需要做一些事情来填充列表,并希望用户能够根据不同的列重新排序。在这种情况下,无论如何你都要在客户端进行排序(可能是JS),所以你不妨使用它。
数据可能显示为已排序,但您不能依赖该数据。假设你在RAM中有一些你需要的数据,而剩下的数据仍然在磁盘上。系统可以并行并开始返回内存中的数据,而其余部分则从磁盘中提取并返回。你根本无法依靠它,如果你需要订购,绝对应该订购你的数据。
- 1. 排序索引使用
- 2. 数组排序用索引
- 3. Mongo使用索引与排序
- 4. 排序使用数组索引
- 5. 使用索引进行数字排序
- 6. MySQL没有使用索引来排序
- 7. mongodb在排序时不使用索引?
- 8. 使用Redis排序集索引
- 9. MySQL的使用索引优化排序
- 10. 使用合并对数组进行排序索引排序
- 11. 使用C++排序索引进行排序
- 12. mongodb索引查找索引排序
- 13. 排序未排序索引的数组
- 14. 在使用lucene 4.0进行索引编排时进行排序
- 15. Elasticsearch洗牌索引排序
- 16. 排序索引元素
- 17. JavaScript数组排序()索引
- 18. 排序列上的索引
- 19. 排序多个索引
- 20. 显示索引/排序DS.hasMany
- 21. QTableWidget原始索引排序
- 22. geocoder:距离排序索引
- 23. 在索引列上排序
- 24. 排序“索引”阵列
- 25. 映射排序索引
- 26. MySql索引排序和Where
- 27. jqGrid:按索引排序
- 28. 索引排序清单
- 29. 排序按索引的Java
- 30. 排序数组,但保持排索引
忘了提及iam使用asp.net应用程序访问数据 – Prady 2010-01-19 04:41:48