代码之家  ›  专栏  ›  技术社区  ›  RageZ

按列排序是否会严重影响性能?

  •  1
  • RageZ  · 技术社区  · 15 年前

    我刚遇到一个在ORDER语句中包含大约5个不同列的SQL查询,这是一个好的实践吗?它如何发挥性能?

    3 回复  |  直到 15 年前
        1
  •  4
  •   Lars D    15 年前

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

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

        2
  •  1
  •   zendar    15 年前

    在5列或更多列上排序不是一个好的实践问题,而是关于业务规则:您是否需要它。如果必须排序,则尝试优化它。

    一些一般步骤:

    1. 首先,检查目标数据库的执行计划。

    2. 如果表现至少是“可以容忍的”,那么你就完了。

    3. 其他:

      • 根据ORDER BY子句更改字段数,并查看它在执行计划中的性能差异。它应该给您一些关于瓶颈的提示。
      • 尝试通过“适当的”索引提高性能。
      • 检查数据库的提示-也许您可以让查询分析器做得更好。
        3
  •  0
  •   Mike Woodhouse    15 年前

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

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

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