【发布时间】:2017-12-24 15:19:12
【问题描述】:
我正在通过 ORM 访问数据库(主要是 MS SQL Server、Postgre)并通过代码定义属性(例如字段/列是否应该有索引)。
我在想,如果一个列将通过 ORDER BY 排序,它应该有一个索引,否则每次都需要全表扫描(例如,如果你想获得按日期排序的前 5 条记录)。
当我在代码中定义这些索引时(在实体框架 POCO 实体上,作为 .NET 属性),我可以在运行时访问这些元数据。在网格中显示数据时,我打算只对那些具有索引属性的列进行排序(通过单击列标题)。我的想法是否正确,或者可能存在一些合理的条件,可以在非索引列上进行排序,反之亦然(索引列排序没有多大意义?..)
简而言之,假设只有那些列在 UI 中是可排序的,并且在数据库级别应用了相应的索引,这是否很好?
或者,用更一般的问题来表述:将要排序的列是否应该始终具有某种索引?
【问题讨论】:
标签: mysql sql-server postgresql entity-framework relational-database