我正在通过ORM访问数据库(主要是MS SQL Server,Postgre),并通过代码定义属性(如字段/列是否应该有索引)。我想如果一个列将通过ORDER BY进行排序,它应该有一个索引,否则每次都需要全表扫描(例如,如果你想获得按日期排序的前5个记录)。在关系数据库中,查询中要排序的所有列是否都有索引?
正如我在代码中定义这些索引(在Entity Framework POCO实体上,作为.NET属性),我可以在运行时访问这些元数据。当在网格中显示数据时,我打算只制作那些具有索引属性的可排序列(通过单击列标题)。我的想法是否正确,或者可能存在一些合理的条件,可以在非索引列上进行分类,反之亦然(索引列分类没有多大意义?)
总之,它是否好假设只有那些列可以在UI中进行排序,并在数据库级别应用相应的索引?
或者,对于更常见的问题来说:应该排序的列总是有某种索引?