Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL concat先下订单_Sql_Sql Order By - Fatal编程技术网

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<代码>排序依据性能更可能受到
选择
子句中的内容的影响,而不是
排序依据
子句中的内容的影响(实际上,两组列/表达式都需要在被排序的数据中,但
选择
通常具有更多的数据)。