许多专栏的排序是否严重影响了性能?

时间:2009-11-07 11:02:55

标签: sql database performance

我刚刚在ORDER语句中遇到了大约5个不同列的SQL查询,这是一个很好的做法,它如何与性能相结合?

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

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

一些一般步骤:

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

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

  3. 其他:

    • 按顺序改变字段数,并查看它在执行计划中的性能差异。它应该给你一些关于瓶颈的提示。
    • 尝试通过“适当的”索引来提高性能。
    • 检查数据库的提示 - 也许你可以让查询分析器做得更好。

答案 2 :(得分:0)

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

所以我猜这个关于良好实践的问题的任何答案都会有很大的“依赖”。

至于性能,如果要求是排序,性能是一个问题,那么再看看是否有可能在远离服务器的情况下进行排序。