Sql 按大量列排序是否严重影响性能?
我刚刚遇到一个SQL查询,ORDER语句中有大约5个不同的列,这是一个好的做法吗?它如何影响性能?列的数量不是很重要。最重要的部分是,顺序和索引是否匹配,以及数据库引擎是否能够识别这一点并正确使用索引。然而,当然也有一些不同。主键通常比其他索引快得多,因为其他索引需要在之后进行主键查找,并且索引单个整数字段的性能要比索引字符串字段的性能好得多Sql 按大量列排序是否严重影响性能?,sql,database,performance,Sql,Database,Performance,我刚刚遇到一个SQL查询,ORDER语句中有大约5个不同的列,这是一个好的做法吗?它如何影响性能?列的数量不是很重要。最重要的部分是,顺序和索引是否匹配,以及数据库引擎是否能够识别这一点并正确使用索引。然而,当然也有一些不同。主键通常比其他索引快得多,因为其他索引需要在之后进行主键查找,并且索引单个整数字段的性能要比索引字符串字段的性能好得多 关于如何构建数据库,有几种说法。通常,您可以通过使用整数作为主键来最小化数据量,但企业中的许多大型数据库在主键中使用多个字符串字段。这可能有几个原因,但性
关于如何构建数据库,有几种说法。通常,您可以通过使用整数作为主键来最小化数据量,但企业中的许多大型数据库在主键中使用多个字符串字段。这可能有几个原因,但性能通常不是其中之一。列的数量不是很重要。最重要的部分是,顺序和索引是否匹配,以及数据库引擎是否能够识别这一点并正确使用索引。然而,当然也有一些不同。主键通常比其他索引快得多,因为其他索引需要在之后进行主键查找,并且索引单个整数字段的性能要比索引字符串字段的性能好得多
关于如何构建数据库,有几种说法。通常,您可以通过使用整数作为主键来最小化数据量,但企业中的许多大型数据库在主键中使用多个字符串字段。这可能有几个原因,但性能通常不是其中之一。如果业务需求规定结果按五列排序,那么假设至少涉及一个客户端和一个服务器,那么唯一要回答的问题是在哪里执行排序 所以我猜,任何关于良好实践的问题的答案都会有大量的“视情况而定”
至于性能,如果要求排序,而性能是一个问题,那么再次看看是否有可能在服务器之外执行排序。如果业务要求规定结果按五列排序,那么这是唯一需要回答的问题,假设至少涉及一个客户机和一个服务器,在哪里执行排序 所以我猜,任何关于良好实践的问题的答案都会有大量的“视情况而定”
至于性能,如果要求排序,而性能是一个问题,那么再次检查排序是否有可能在服务器之外执行。对5列或更多列排序不是良好做法的问题,而是关于业务规则:您是否需要它。如果必须排序,请尝试对其进行优化 一些一般步骤:
- 按ORDERBY子句更改字段的数量,并查看它在执行计划中产生的性能差异。它应该给你一些关于瓶颈的提示
- 尝试通过“适当的”索引来提高性能
- 检查您的数据库的提示-也许您可以让查询分析器以更好的方式完成它
在5个或5个以上的栏目上排序并不是一个良好实践的问题,而是关于业务规则:您是否需要它。如果必须排序,请尝试对其进行优化 一些一般步骤:
- 按ORDERBY子句更改字段的数量,并查看它在执行计划中产生的性能差异。它应该给你一些关于瓶颈的提示
- 尝试通过“适当的”索引来提高性能
- 检查您的数据库的提示-也许您可以让查询分析器以更好的方式完成它
+1顺便说一句,您可能应该说在聚集索引上排序很快。并非总是主键索引是聚集的。+1顺便说一句,你可能应该说聚集索引上的排序很快。它并不总是聚集的主键索引。