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

有什么理由担心表中的列顺序吗?

姚和顺
2023-03-14
问题内容

我知道您可以使用FIRST和AFTER更改MySQL中的列顺序,但是为什么要麻烦呢?由于良好的查询会在插入数据时显式命名列,因此确实有任何理由要关心列在表中的顺序吗?


问题答案:

列顺序对我已调优的某些数据库(包括Sql
Server,Oracle和MySQL)产生了很大的性能影响。这篇文章有很好的经验法则:

  • 主键列优先
  • 接下来是外键列。
  • 经常搜索的列
  • 以后经常更新的列
  • 空列最后。
  • 在更经常使用的可空列之后使用最少的可空列

性能差异的一个示例是索引查找。数据库引擎根据索引中的某些条件查找行,然后获取行地址。现在说您正在寻找SomeValue,它在此表中:

 SomeId int,
 SomeString varchar(100),
 SomeValue int

引擎必须猜测SomeValue从哪里开始,因为SomeString的长度未知。但是,如果将顺序更改为:

 SomeId int,
 SomeValue int,
 SomeString varchar(100)

现在,引擎知道可以在行开始后的4个字节处找到SomeValue。因此,列顺序可能会对性能产生重大影响。

编辑:Sql Server
2005在行的开头存储固定长度的字段。并且每一行都有对varchar开头的引用。这完全抵消了我上面列出的效果。因此,对于最近的数据库,列顺序不再有任何影响。



 类似资料:
  • 本文向大家介绍什么是Python中的顺序表,包括了什么是Python中的顺序表的使用技巧和注意事项,需要的朋友参考一下 1、顺序表介绍 顺序表是最简单的一种线性结构,逻辑上相邻的数据在计算机内的存储位置也是相邻的,可以快速定位第几个元素,中间不允许有空,所以插入、删除时需要移动大量元素。顺序表可以分配一段连续的存储空间Maxsize,用elem记录基地址,用length记录实际的元素个数,即顺序表

  • 大家最近肯定有这么一个感受——只要一上网,ChatGPT就高频率地映入你的眼帘,人们会忍不住了解这款人工智能有多神、有多火。那对有的人来说,它是款“神器”,标志着人工智能向前迈进了“历史级”的一大步,对有的人来说,它是个“幽灵”,让人恐慌、担忧,一说就是害怕自己被机器取代。

  • 我想知道为什么不使用这个明显简洁的表达呢?

  • 我想使用数据框将熊猫数据框上传到大查询。调用函数。 我指定一个table_schema参数来强制BigQuery中的特定列顺序(这可能与Dataframe不同)。 所以我用例如: 数据帧中的列顺序是:Col1、Col3、Col4、Col5、Col2、Col6、Col7、Col8 工作做得正确。 但是当我检查Big Query中创建(或替换)destination_table的表模式时,列顺序是:C

  • 问题内容: 我有以下问题。我有三个类,A,B和C。A包含一个与B:s相关的一对一列表。B包含与C的ManyToOne关系。C包含一个名为“名称”的字段,B也包含一个名为“名称”的字段。我要完成的工作是让A列表中的项目主要按C的名称排序,然后按B的名称排序- 问题是我不知道该怎么做。可能吗? 我使用EclipseLink作为我的JPA提供程序。 编辑是,我尝试了不同的变体,例如@OrderBy(“

  • 问题内容: 我让hbm2ddl为我创建表(出于开发目的),并且列与类中字段的顺序相反。 如何使其以与类相同的顺序创建列? 我认为Java类不存储字段的顺序,因此Hibernate根本不知道源顺序是什么(如果考虑更复杂的情况,这似乎是合乎逻辑的)。 但是,我至少可以要求Hibernate将PK和FK列作为第一列吗? Hibernate 4.0.0(JBoss AS 7.1.2)MySQL 5.1.x