Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按大量列排序是否严重影响性能?_Sql_Database_Performance - Fatal编程技术网

Sql 按大量列排序是否严重影响性能?

Sql 按大量列排序是否严重影响性能?,sql,database,performance,Sql,Database,Performance,我刚刚遇到一个SQL查询,ORDER语句中有大约5个不同的列,这是一个好的做法吗?它如何影响性能?列的数量不是很重要。最重要的部分是,顺序和索引是否匹配,以及数据库引擎是否能够识别这一点并正确使用索引。然而,当然也有一些不同。主键通常比其他索引快得多,因为其他索引需要在之后进行主键查找,并且索引单个整数字段的性能要比索引字符串字段的性能好得多 关于如何构建数据库,有几种说法。通常,您可以通过使用整数作为主键来最小化数据量,但企业中的许多大型数据库在主键中使用多个字符串字段。这可能有几个原因,但性

我刚刚遇到一个SQL查询,ORDER语句中有大约5个不同的列,这是一个好的做法吗?它如何影响性能?

列的数量不是很重要。最重要的部分是,顺序和索引是否匹配,以及数据库引擎是否能够识别这一点并正确使用索引。然而,当然也有一些不同。主键通常比其他索引快得多,因为其他索引需要在之后进行主键查找,并且索引单个整数字段的性能要比索引字符串字段的性能好得多


关于如何构建数据库,有几种说法。通常,您可以通过使用整数作为主键来最小化数据量,但企业中的许多大型数据库在主键中使用多个字符串字段。这可能有几个原因,但性能通常不是其中之一。

列的数量不是很重要。最重要的部分是,顺序和索引是否匹配,以及数据库引擎是否能够识别这一点并正确使用索引。然而,当然也有一些不同。主键通常比其他索引快得多,因为其他索引需要在之后进行主键查找,并且索引单个整数字段的性能要比索引字符串字段的性能好得多


关于如何构建数据库,有几种说法。通常,您可以通过使用整数作为主键来最小化数据量,但企业中的许多大型数据库在主键中使用多个字符串字段。这可能有几个原因,但性能通常不是其中之一。

如果业务需求规定结果按五列排序,那么假设至少涉及一个客户端和一个服务器,那么唯一要回答的问题是在哪里执行排序

所以我猜,任何关于良好实践的问题的答案都会有大量的“视情况而定”


至于性能,如果要求排序,而性能是一个问题,那么再次看看是否有可能在服务器之外执行排序。

如果业务要求规定结果按五列排序,那么这是唯一需要回答的问题,假设至少涉及一个客户机和一个服务器,在哪里执行排序

所以我猜,任何关于良好实践的问题的答案都会有大量的“视情况而定”


至于性能,如果要求排序,而性能是一个问题,那么再次检查排序是否有可能在服务器之外执行。

对5列或更多列排序不是良好做法的问题,而是关于业务规则:您是否需要它。如果必须排序,请尝试对其进行优化

一些一般步骤:

  • 首先,检查目标数据库的执行计划

  • 如果性能至少是“可容忍的”,那么您就完成了

  • 其他:

    • 按ORDERBY子句更改字段的数量,并查看它在执行计划中产生的性能差异。它应该给你一些关于瓶颈的提示
    • 尝试通过“适当的”索引来提高性能
    • 检查您的数据库的提示-也许您可以让查询分析器以更好的方式完成它

  • 在5个或5个以上的栏目上排序并不是一个良好实践的问题,而是关于业务规则:您是否需要它。如果必须排序,请尝试对其进行优化

    一些一般步骤:

  • 首先,检查目标数据库的执行计划

  • 如果性能至少是“可容忍的”,那么您就完成了

  • 其他:

    • 按ORDERBY子句更改字段的数量,并查看它在执行计划中产生的性能差异。它应该给你一些关于瓶颈的提示
    • 尝试通过“适当的”索引来提高性能
    • 检查您的数据库的提示-也许您可以让查询分析器以更好的方式完成它

  • +1顺便说一句,您可能应该说在聚集索引上排序很快。并非总是主键索引是聚集的。+1顺便说一句,你可能应该说聚集索引上的排序很快。它并不总是聚集的主键索引。