当前位置: 首页 > 面试题库 >

查询中的列顺序重要吗?

丁星火
2023-03-14
问题内容

从MySQL表中选择列时,与列在表中的顺序相比,选择列的顺序是否会影响性能(不考虑可能覆盖列的索引)?

例如,您有一个表,其中包含uid,name,bday行,并具有以下查询。

SELECT uid, name, bday FROM table

MySQL是否会以不同的方式看到以下查询,从而导致性能下降?

SELECT uid, bday, name FROM table

问题答案:

实际上,顺序并不重要,因此您可以随意随意订购。

编辑:我想更多的背景是有帮助的:据我所知,优化任何查询的过程发生在确切确定要提取行数据的哪个子集之前。因此,查询优化器首先将其细分为要查看的表,要执行的联接,要使用的索引,要应用的聚集等,然后检索该数据集。列排序发生在数据提取和结果集的形成之间,因此数据实际上按照数据库的顺序“到达”,然后在返回到您的应用程序时进行重新排序。



 类似资料:
  • 问题内容: 最近,我一直在设计响应速度更快的网站,并且经常使用CSS媒体查询。我注意到的一种模式实际上是定义媒体查询的顺序。我没有在每个浏览器中都进行过测试,只是在Chrome上进行了测试。有这种行为的解释吗?有时,当您的网站无法正常运行时,它会令人沮丧,并且您不确定这是查询还是编写查询的顺序。 这是一个例子: HTML CSS: 但是,如果我最后一次为1024x600编写查询,浏览器将忽略它,并

  • 问题内容: 数据库中列类型的顺序是否对查询时间有影响? 例如,具有混合顺序(INT,TEXT,VARCHAR,INT,TEXT)的表的查询是否比具有连续类型(INT,INT,VARCHAR,TEXT,TEXT)的表的查询慢? 问题答案: 答案是肯定的,这确实很重要,并且可能很重要,但 通常 并不重要。 所有I / O都在页面级别完成(根据您的操作系统,通常为2K或4K)。行的列数据彼此相邻存储,除

  • 问题内容: 假设我将与关联的表存储如下(代表事件的时间戳): 这样我们可以说: 用户1具有ADBCB的事件序列 用户2具有事件序列BBAAC 我想针对这些用户回答的问题类型非常容易表达为事件序列的常规表达式,例如“哪些用户的事件序列与A. * B匹配?” 或“哪些用户的事件序列与A [^ C] * B [^ C] * D匹配?” 等等。 在此表结构上可以用来回答类似查询的SQL技巧或运算符是什么?

  • 问题内容: 假设我有一个查询“ select * from子句,其中id在(0,2,5,1,3)中”,我实际上希望返回的行以它们在where子句中指定的相同顺序返回。ID的顺序将随查询的不同而改变,并且该顺序没有模式。 我知道可以更改数据模型,创建临时表等。但是请相信我,这些类型的解决方案在我的情况下将行不通。我也无法在应用程序代码中更改结果对象的顺序。 我还知道,不同的数据库引擎对事物的排序方式

  • 如果我们有一个由col、col2、col3分区的配置单元表,那么在对该表执行SELECT时,如果我想在WHERE子句中指定这些列,它们是否必须以相同的顺序出现,以便利用分区?我的意思是,逻辑上是的,但无论我以什么顺序指定它们,HIVE编译器都不能理解它们的实际顺序。它应该能够在内部应用正确的顺序,因为HIVE已经知道正确的顺序是col2、col2、col3,所以它以这种方式使用它。HIVE在我们定

  • 问题内容: 如果我有两列,一列具有非常高的基数,而另一列具有非常低的基数(值的唯一数目),那么按哪个顺序分组是否重要? 这是一个例子: 在某些情况下重要吗? 问题答案: 不,顺序对于GROUP BY子句无关紧要。 MySQL和SQLite是我所知道的仅有的数据库,它允许您选择按组方式(非标准,不可移植)从组中省略的列,但是顺序也不重要。