对DB中的行进行排序(通过id或其他字段?)

时间:2011-03-29 12:04:50

标签: database

最好的方法是什么?为什么?

  1. 按ID排序行
  2. 按其他字段排序行(例如创建时间)
  3. 更新1.当然,我可以为另一个字段添加索引 更新2.最适合速度和速度可用性

2 个答案:

答案 0 :(得分:0)

您的意思是排序还是索引?无论您使用哪种数据库技术,通常都可以在任何列或不同的列组合上应用索引。这允许数据库引擎优化查询执行并制定更好的执行计划。在某种程度上,索引是#34; sort",用于您的数据库引擎。

实际排序(如ORDER BY MyColumn ASC|DESC中)实际上仅与查询数据库的上下文相关。您决定如何对查询结果进行排序通常取决于您打算如何使用数据。

答案 1 :(得分:0)

我假设您使用的是关系数据库,例如MySQL或PostgreSQL,而不是非SQL数据库之一。

这意味着您使用SQL语言与数据库交互,并且从数据库获取数据的方式是使用SQL SELECT语句。通常,您的表将具有“key”属性,这意味着每一行都具有该属性的唯一值,并且通常数据库将存储按该键预先排序的数据(通常在B树数据结构中) 。

因此,当您进行查询时,例如“SELECT firstname,lastname FROM employees;”,其中“employees”是具有一些属性的表,例如“employee_id”,“firstname”,“lastname”,“home_address”等,通常会传递数据按employee_id值的顺序。

要以不同的顺序对数据进行排序,可以在SELECT语句中使用SQL“ORDER_BY”子句。例如,如果您希望数据按“lastname”排序,那么您可能会使用类似“SELECT firstname,lastname FROM employees ORDER_BY lastname;”。

数据库可以实现此查询的一种方法是检索所有数据,然后在将其传递给用户之前对其进行排序。

此外,可以为表创建索引,允许数据库查找具有属性或属性集的特定值或值范围的行。如果您在SELECT查询中添加了一个“WHERE”子句(显着)减少了匹配行的数量,那么数据库可以使用索引来加速查询处理,方法是首先过滤行,然后(如果需要)对它们进行排序。请注意,数据库查询优化的整个主题很复杂,并考虑了各种因素来尝试和估计哪些可能的查询实现方案将导致最快的实现。