是否有理由担心表中的列顺序?

2023-12-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 开头的引用。这完全否定了我上面列出的效果。因此对于最近的数据库,列顺序不再有任何影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否有理由担心表中的列顺序? 的相关文章

  • 优化mysql中日期类型字段的查询

    我目前准备了以下查询 select sum amount as total from incomes where YEAR date 2019 and MONTH date 07 and incomes deleted at is null
  • mysql中的按位移位

    如何在 MySQL 中进行按位移位 有没有具体的指令或者操作符 如果不是 如何最佳地模拟它 看一下按位运算符MySQL first http dev mysql com doc refman 5 0 en bit functions htm
  • 如何使组合键唯一?

    I am making a database of students in one school Here is what I have so far 如果您不喜欢阅读 请跳至 简而言之 部分 问题是我对这个设计并不满意 我想要的组合gra
  • AttributeError:尝试在 python 中运行 sqlalchemy 来管理我的 SQL 数据库时,“Engine”对象没有属性“execute”

    我有以下代码行不断给我一个错误 即引擎对象没有对象执行 我认为我一切都对 但不知道接下来会发生什么 似乎其他人也遇到了这个问题 重新启动他们的笔记本电脑就可以了 我正在使用 Pycharm 并已重新启动但没有任何解决方案 任何帮助是极大的赞
  • 列是存在的,但是当我尝试删除它时,它说 MYSQL 中没有列? **错误代码:1091。无法删除...**

    我尝试运行以下查询 ALTER TABLE ORDER DETAIL DROP foreign key USER ID It says Error Code 1091 Can t DROP USER ID check that column
  • Crystal Reports 相当于“WHERE”

    我熟悉 SQL 但不熟悉 Crystal Reports 我正在尝试处理包含 5 列的导入数据集 id deathDate giftDate giftAmount Dead 123 2008 01 06 2011 09 08 25 00 T
  • 如何在php中正确显示另一种语言的mysql表数据

    我有一个 mySQL 表 其中一列中的数据采用英语以外的语言 波斯语 当我在表中输入数据时 它会正确显示 但是当我想在 php 文件中显示数据时 它会显示如下 好吧 我应该怎么做才能以正确的形式显示数据 由于我经常使用 非英语 字符 因此要
  • MySQL 获取时间优化

    o我有一个包含 200 万个寄存器的表 但它很快就会增长得更多 基本上 该表包含具有相应描述符的图像的兴趣点 当我尝试执行选择在空间上靠近查询点的点的查询时 总执行时间花费太长 更准确地说 持续时间 获取 0 484 秒 27 441 秒
  • 有很多数据库视图可以吗?

    我很少 每月 每季度 使用 Microsoft SQL Server 2005 数据库视图生成数百份 Crystal Reports 报告 在我不读取这些视图的所有时间里 这些视图是否会浪费 CPU 周期和 RAM 因为我很少从视图中读取数
  • Mac OS X Yosemite/El Capitan 上自动启动 MySQL 服务器

    我想在启动时自动启动 MySQL 服务器 这在小牛队是可能的 但在优胜美地似乎不起作用 edit 似乎这也适用于 El Capitan dcc 非常接近 这是 MySQL 在 Yosemite 上再次自动启动的方式 The com mysq
  • 使用 Hibernate 和 MySQL、全局和本地进行 Spring 事务管理

    我正在使用 MySQL Server 5 1 Spring 3 0 5 和 Hibernate 3 6 开发 Web 应用程序 我使用 Springs 事务管理 我是新手 所以如果我问一个容易回答的问题 请耐心等待 1 我读到了有关全局 x
  • 实体框架 - 查询可为空列时出现问题

    我在从具有可为空的tinyint 列的表中查询数据时遇到问题 问题似乎是查询生成为 AND CAST Extent1 PositionEffect AS int p linq 3 gt p linq 3 NULL 如果我手动运行该查询 它不
  • java中如何知道一条sql语句是否执行了?

    我想知道这个删除语句是否真的删除了一些东西 下面的代码总是执行 else 是否删除了某些内容 执行此操作的正确方法是什么 public Deleter String pname String pword try PreparedStatem
  • 每个搜索词显示一行,如果未找到则替换默认值

    Query SELECT product id name FROM product WHERE barcode in 681027 8901030349379 679046 679047 679082 679228 679230 67923
  • 如何使用内联 SQL 参数化 IN 语句的集合? [复制]

    这个问题在这里已经有答案了 可能的重复 参数化 SQL IN 子句 https stackoverflow com questions 337704 parameterizing a sql in clause 你好 我有一个查询 如下所示
  • 如何避免这两个 SQL 语句之间出现死锁?

    我有两个存储过程在单独的线程中运行 在 SQL Server 2005 上运行 一个过程将新行插入到一组表中 另一个过程从同一组表中删除旧数据 这些过程在表上遇到了死锁DLevel and Model 这是架构 source barrams
  • Mysql获取特定表的最后一个id

    我必须从特定的插入表中获取最后的插入 ID 可以说我有这个代码 INSERT INTO blahblah test1 test 2 VALUES test1 test2 INSERT INTO blahblah2 test1 test 2
  • CakePHP - 获取上次运行的查询

    我想获取 CakePHP 运行的最后一个查询 我无法在 core php 中打开调试 也无法在本地运行代码 我需要一种方法来获取最后一个 sql 查询并将其记录到错误日志中而不影响实时站点 该查询失败但正在运行 像这样的事情会很棒 this
  • 无需 cron 在后台发送邮件

    我想知道是否有一种方法可以运行 PHP 循环 以便在后台向订阅者发送几百封电子邮件 我的目标是格式化新闻通讯 单击发送 然后关闭浏览器或更改页面 当然 发送电子邮件的实际过程将在后台运行 不会因浏览器关闭而中断 我知道这可以通过 cron
  • 返回年份数组作为年份范围

    我正在尝试查询一个包含以下内容的表character varying 年份列 并将这些年份作为逗号分隔的年份范围字符串返回 年份范围将由数组中存在的连续年份确定 不连续的年份 年份范围应以逗号分隔 数据类型的原因是character var

随机推荐

  • 如何在主应用程序中合并 Rails Engine ApplicationController 方法?

    如何将 Rails 引擎 ApplicationController 它的方法 合并到主应用程序中 我需要访问这些引擎控制器方法 并且我想在不使用主应用程序的 ApplicationController 中的 包含 的情况下执行此操作 mo
  • 如何使用 AngularJS 限制输入值?

    我正在寻找将输入内的值限制为 4 并将 4 位数字值处理到我的控制器的方法
  • 捕获 FileSystemWatcher 侦听器线程抛出的异常

    我正在尝试找出一种方法来捕获抛出的异常FileSystemWatcher正如我从软件的崩溃报告日志中注意到的那样 这些似乎是随机发生的 崩溃并不频繁 因为上个月只发生了两次 但很烦人 我很想修复它 有问题的异常似乎与路径中包含无效字符的文件
  • C# 代码无法“查看”我的 C++ dll 中的方法

    我有一段用 C 编写的代码 不是我写的 并且想在 C 中使用它 所以我决定制作一个 dll 并从那里使用这个类 我对 C 的了解很少 并且在我的 C 项目中引用此类的方法时遇到问题 C 代码是这样的 ifndef BeamAn class
  • 使用 jQuery 更改 URL 和重定向

    我有一些这样的代码
  • PCA 中第一个分量覆盖的 99% 方差的显着性

    当第一个分量覆盖 PCA 分析中总方差的 99 以上时 这意味着什么 我有一个大小为 500X1000 的特征向量 我在其中使用了 Matlab 的 pca 函数 该函数返回 coeff score latent tsquared expl
  • Android OpenGL ES 透明背景

    我正在构建一个利用 OpenGL 的 Android 应用程序 就目前而言 本次活动的背景GLSurfaceView由我的代码动态生成并作为纹理加载并用glDrawTexfOES 这是 好的 但我可以简单地将图像更平滑地显示到其自己的表面
  • Mediacodec 解码器在解码 H264 文件时总是超时

    我一直在努力decode编码的视频文件H264编码与安卓的媒体编解码器并尝试将解码器的输出放入surface 但是当我运行应用程序时 它显示黑色表面 并且在 DDMS logcat 中我看到解码器超时 我已将文件解析为有效frames首先
  • Jmeter 中突发模式的负载测试

    我正在运行 1 小时的负载测试 在测试之间我希望场景以 15 分钟的固定间隔运行 1 分钟的持续时间 在jmeter中 目前我可以模拟除突发模式之外的所有其他场景 如何保持延迟15分钟并触发持续1分钟的请求 如何达到突发的TPS 目前我必须
  • 如何将 HH:mm:ss.SSS 转换为毫秒?

    我有一个字符串00 01 30 500这相当于90500毫秒 我尝试使用SimpleDateFormat给出包括当前日期在内的毫秒数 我只需要毫秒级的字符串表示形式 我是否必须编写自定义方法来分割并计算毫秒 或者还有其他方法可以做到这一点吗
  • 在php中获取memcache项的过期时间?

    我在我的网站上缓存推文 过期时间为 30 分钟 当缓存为空时 第一个找到的用户将重新填充它 然而 那时 Twitter API 可能会返回 200 在这种情况下 我想将之前的数据再延长 30 分钟 但之前的数据已经丢失了 因此 我想考虑在过
  • 在 UITableViewController 中弹出多个级别

    我希望能够从 UITableViewController 堆栈中弹出多个视图 例如 在 Apple DrillDownSave 示例中 当查看级别 3 时返回级别 1 或者当查看项目时按按钮返回级别 2 我试过 self navigatio
  • 值为 Empty 的 Variant 类型的变量如何在堆栈上表示?

    以下解释来自Rhino 开发者文档 Empty 当您在 VBScript 中声明变量时 变量的值之前 第一个赋值未定义 或者Empty Dim varValue Empty value 所以基本上 Empty说 我是一个未初始化的变体 如果
  • `int 3` 到底应该做什么?

    根据this int 3从用户空间使用来生成 SIGTRAP 但是 在用户空间下的特权下应该做什么呢 还有更多的东西可以从用户空间 SIGTRAP 生成这样的东西吗 操作码int 3对 UNIX 约定一无所知 例如 SIGTRAP Int
  • 获取Windows 8自动颜色主题的活动颜色

    在 Windows 8 中 我已将配色方案设置为自动 并将壁纸配置为在 x 分钟后更改 配色方案根据活动壁纸而变化 我正在开发一个 WPF 应用程序 并且希望在 Windows 更改配色方案以匹配当前壁纸时更改我的渐变 有没有办法获取当前
  • 解析开源服务器重置密码错误

    I updated the parse server to run on AWS and I get this error when I hit the reset password but the login works I am not
  • 是什么导致了这个属性错误?

    我一直在寻找解决方案 但还没有找到 所以这是我的代码 class snakeGame def init self pygame init self isRunning False self surface None self drawLis
  • RNetLogo 无法在 Mac Yosemite 上运行

    我刚刚尝试过此操作 但收到此错误消息 关于如何修复它有什么想法吗 我使用的是R版本3 1 1 RNetLogo 1 0 1 平台是x86 64 apple darwin13 1 0 64位 Java 7 update 60 Sys sete
  • 如何使用 CasperJS 通过自定义 POST 请求下载文件

    我正在编写一个爬虫 需要使用 POST 下载表单请求后生成的文件 我已成功将 this download url POST Params 用于常规表单 其中一个网站有许多字段使用相同的名称 从而使我无法使用常规下载方法 在尝试了很多事情之后
  • 是否有理由担心表中的列顺序?

    我知道你可以用 FIRST 和 AFTER 来改变 MySQL 中的列顺序 但是你为什么要费心呢 由于好的查询在插入数据时会显式命名列 因此真的有理由关心列在表中的顺序吗 列顺序对我调优的一些数据库 包括 Sql Server Oracle