数据库排序SQL Server
我制作了一个windows应用程序,需要按选定列添加“排序”。网格有4列和很多记录(当然是分页的) 问题是:数据库排序SQL Server,sql,sql-server,Sql,Sql Server,我制作了一个windows应用程序,需要按选定列添加“排序”。网格有4列和很多记录(当然是分页的) 问题是: 是否应该为网格中需要排序的每个列添加索引? 提前谢谢你 MSSQL具有聚集索引,通过 每个表只能有一个聚集索引:-( 你的索引必须适合于RAM。索引的选择取决于很多因素,包括插入/更新/删除查询的频率与选择查询的频率。索引可以帮助排序,否则四个索引可能对性能不太坏,但是它确实取决于你要完成什么。 是-考虑添加。索引 确保出于性能原因所做的事情确实有帮助的唯一方法是对它们进行测试。但是,如
是否应该为网格中需要排序的每个列添加索引?
提前谢谢你MSSQL具有聚集索引,通过 每个表只能有一个聚集索引:-(
<>你的索引必须适合于RAM。索引的选择取决于很多因素,包括插入/更新/删除查询的频率与选择查询的频率。索引可以帮助排序,否则四个索引可能对性能不太坏,但是它确实取决于你要完成什么。
是-考虑添加。索引
确保出于性能原因所做的事情确实有帮助的唯一方法是对它们进行测试。但是,如果表中有大量数据,而且人们可能会对所有这些列使用排序,那么我会添加索引。否,因为大表索引并不能改善排序。完全扫描比索引扫描+完全扫描要好。@iddqd-indexes确实改善了排序。索引是预先排序的,因此无需按需对整个表进行排序。@Martin Smith索引对于大型表(OLTP数据库)是无用的,如果您有很多DML查询,则维护成本非常高。如果索引超过某个大小限制,则随机读取会杀死每台服务器。您可以尝试,但我100%确定,在某个时候,分页时间将增长到非常大的值。@iddqd-您在说什么?为什么需要执行“索引扫描+完全扫描”?为什么需要进行随机读取而不是顺序读取?(如果索引没有覆盖,可能需要进行一些书签查找,但仅限于返回页面)不必每次都对整个表进行排序怎么可能对这个查询没有好处?你确定你知道SQL Server中的索引是如何构造的吗?我非常清楚MSSQL、Sybase Oracle、Postgresql、MySQL中的索引是如何构造的。随机读取-对于非聚集索引,你需要从beggining、middle、end物理层访问数据存储,即使您有复合覆盖索引。