SQL concat先下订单
我们知道,对查询进行排序会降低处理速度,特别是当行数太大时。如果我们要按多个字段对查询进行排序,则过程将慢得多SQL concat先下订单,sql,sql-order-by,Sql,Sql Order By,我们知道,对查询进行排序会降低处理速度,特别是当行数太大时。如果我们要按多个字段对查询进行排序,则过程将慢得多 ORDER by field1, field2, field3 我认为先连接这些字段,然后按顺序使用它们会有所帮助 SELECT CONCAT(field1, field2, field3) AS useForOrder FROM table ORDER BY useForOrder 我说得对吗?使用这种技术有效吗?我不确定你是从哪里得到这个想法的:“如果我们要按多个字段对查询排序
ORDER by field1, field2, field3
我认为先连接这些字段,然后按顺序使用它们会有所帮助
SELECT CONCAT(field1, field2, field3) AS useForOrder FROM table ORDER BY useForOrder
我说得对吗?使用这种技术有效吗?我不确定你是从哪里得到这个想法的:“如果我们要按多个字段对查询排序,那么过程会慢得多。” 查询中的
orderby
子句要求对数据进行排序。无论密钥大小如何,对数据进行排序所需的时间大致相同,因为排序算法需要多次读取和写入数据
您可能会被这样一个事实弄糊涂,即——有时——实际的排序是不必要的,因为有一个具有正确顺序的可用索引。但是,这与列数无关,因为复合索引可以按顺序匹配多个列
在select
中串联结果对排序性能的影响最小。但是,这可能会影响排序顺序。考虑下面的值:
- “猫”,“月亮”
- “目录”
- ‘猫’、‘女人’、’
- 走秀
- 目录
- 卡特卢纳
- 猫步
- 猫女
- 猫月神
- 猫女
- 目录
- 猫步
顺序不一样。为什么不试试看呢?这也取决于索引。如果这3列是索引,指定invidualy wins。@Phil,我以前经历过一个巨大的表行,现在没有访问权限。因此,现在我正在处理一个包含小行的新表,但将来这些行将被编号。@IvorySantos使用解释计划来确定查询的效率,而不是根据我的经验确定执行时间,排序大量内容会使过程变慢。@IvorySantos<代码>排序依据性能更可能受到
选择
子句中的内容的影响,而不是排序依据
子句中的内容的影响(实际上,两组列/表达式都需要在被排序的数据中,但选择
通常具有更多的数据)。