我们知道,如果行数太大,订购查询可能会减慢进程的速度。如果我们要通过多个字段对查询进行排序,则该过程会慢得多。
ORDER by field1, field2, field3
我认为首先连接这些字段然后按顺序使用它会有所帮助。
SELECT CONCAT(field1, field2, field3) AS useForOrder FROM table ORDER BY useForOrder
我是对的吗?使用这种技术是否有效?
答案 0 :(得分:0)
我不确定你从哪里得到这个想法:“如果我们要通过多个字段对查询进行排序,那么这个过程会慢得多。”
查询中的order by
子句需要对数据进行排序。无论密钥的大小如何,对数据进行排序的时间大约相同,因为排序算法需要多次读取和写入数据。
您可能会对以下事实感到困惑 - 有时 - 实际排序不是必需的,因为存在具有正确排序的可用索引。但是,这与列数无关,因为复合索引可以匹配order by
中的多个列。
在select
中连接结果对排序性能的影响最小。但是,它可能会对排序顺序产生影响。考虑以下值会发生什么:
通过连接,这些将排序为:
按字段,这些将是:
订单不一样。