SQL concat首先在订购之前

时间:2014-02-07 03:09:34

标签: sql sql-order-by

我们知道,如果行数太大,订购查询可能会减慢进程的速度。如果我们要通过多个字段对查询进行排序,则该过程会慢得多。

ORDER by field1, field2, field3

我认为首先连接这些字段然后按顺序使用它会有所帮助。

SELECT CONCAT(field1, field2, field3) AS useForOrder FROM table ORDER BY useForOrder

我是对的吗?使用这种技术是否有效?

1 个答案:

答案 0 :(得分:0)

我不确定你从哪里得到这个想法:“如果我们要通过多个字段对查询进行排序,那么这个过程会慢得多。”

查询中的order by子句需要对数据进行排序。无论密钥的大小如何,对数据进行排序的时间大约相同,因为排序算法需要多次读取和写入数据。

您可能会对以下事实感到困惑 - 有时 - 实际排序不是必需的,因为存在具有正确排序的可用索引。但是,这与列数无关,因为复合索引可以匹配order by中的多个列。

select中连接结果对排序性能的影响最小。但是,它可能会对排序顺序产生影响。考虑以下值会发生什么:

  • '猫','','Luna'
  • '目录','',''
  • '猫','女',''
  • 'Catwalk','',''

通过连接,这些将排序为:

  • 目录
  • Catluna
  • 猫道
  • 猫女

按字段,这些将是:

  • Cat Luna
  • 猫女
  • 目录
  • 猫道

订单不一样。