在 SQL 表的列中分离大小相关数据是否更有效?

2024-04-22

我有一个 MySQL 数据库表,其中有一列类型为 varchar(386)。我选择这个字符数是因为我事先计算了最长条目的字符数。我目前有 400,000 个条目,但预计会随着时间的推移而增加。

我进行了一些测试,发现大约 390,000 个条目仅使用 60 个或更少的字符,而最后 10,000 个条目最多使用 386 个字符。

我应该将 10,000 个大条目分成一个单独的表吗?我将如何实施呢?从长远来看,这会提高我的查询速度效率吗?


VARCHAR与表内联存储。VARCHAR当大小合理时,速度会更快,而速度的权衡取决于您的数据和硬件,您希望用您的数据对现实场景进行基准测试。

可以存储的有效最大字节数VARCHAR or VARBINARY列受最大行大小的限制65,535 bytes,在所有列之间共享。

例如,一个VARCHAR(255)列可以容纳最大长度为 255 个字符的字符串。假设该列使用latin1字符集(每个字符一个字节),则实际需要的存储是字符串的长度(L),加上一个字节来记录字符串的长度。对于字符串'abcd', L is 4存储要求为5个字节。如果同一列被声明为使用ucs2双字节字符集,存储要求为10个字节:'abcd'的长度为8个字节,该列需要两个字节来存储长度,因为最大长度大于255(最多510 bytes).

对于较大的数据,请考虑使用TEXT or BLOB. TEXT and BLOB列的实现方式不同NDB存储引擎,其中每一行TEXT柱由两个独立的部分组成。其中之一是固定大小的(256 bytes),并且实际上存储在原始表中。另一个由超过的任何数据组成256 bytes,它存储在隐藏表中。第二个表中的行始终是2,000 bytes长的。这意味着a的大小TEXT列是256 if size <= 256(其中size代表行的大小);否则,尺寸为256 + size + (2000 – (size – 256) % 2000).

http://dev.mysql.com/doc/refman/5.6/en/storage-requirements.html http://dev.mysql.com/doc/refman/5.6/en/storage-requirements.html

取决于您的数据库关系,如果您很少在查询中使用该字段。例如,获取附加信息。创建单独的表是不错的选择(规范化)。

NOTES : VARCHAR与不同的是CHAR。如果你创建VARCHAR(250)并插入20上面的字符然后需要5 bytes + L不同与CHAR(250),这将需要250 bytes + L对于相同的条件。

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

在 SQL 表的列中分离大小相关数据是否更有效? 的相关文章

  • PHP 和 MySQL 的重音字符错误

    我的问题是 直接通过 PHP 编写的内容是正确重音的 但是当重音单词来自 MySQL 时 字母会像这样 我尝试使用html charset as ISO 8859 1它修复了 MySQL 字母 但破坏了其他字母 解决这一切的一种方法是设置我
  • MySQL 中布尔值的 TINYINT 与 ENUM(0, 1)

    MyISAM 表和 MySQL 5 1 中具有 0 和 1 值的 Tinyint 或 ENUM 0 1 哪个更好 您可以使用BIT 1 如中提到的MySQL 5 1 参考 http dev mysql com doc refman 5 1
  • PHP多图像文件上传并存储到文件夹和数据库

    我正在建立一个网站 向夜间狂欢者展示大城市夜总会场所和活动的列表 我正在尝试构建一个后端页面 管理员可以在其中添加俱乐部并输入信息 例如机构名称 位置 相对价格等 当然还有俱乐部的一些图像 每个俱乐部必须至少有一张图像 即主图像 可以有额外
  • 数据读取过程中遇到致命错误

    我正在进行定期更新表扫描 Using connect1 As New MySqlConnection ConnectLocalhost serverString connect1 Open Dim cmd New MySqlCommand
  • Innodb页面大小设置

    在innodb中 页面大小默认为16kb 如何将页面大小设置为 8kb 是否有在源编译步骤中设置的选项 您不需要在源编译步骤中指定页面大小 MySQL 5 6 及更高版本支持不同的页面大小 无需重新编译 但是 您必须在初始化 InnoDB
  • MYSQL 按喜欢/不喜欢和受欢迎程度排序

    我有评论表 其中包括喜欢和不喜欢的内容 现在我在正确的顺序上遇到了问题 实际上 我的系统在顶部显示了最多点赞的评论 我正在 youtube 上寻找类似系统的东西 这意味着 100like 100dislikes 的评论的顺序高于 1 1 我
  • MySQL SELECT OpenCarts 数据库中的重复行

    只是玩一下 OpenCart DB 看看我是否能学到一些东西 如果我使用以下SELECT结果返回重复的行 SELECT DISTINCT p product id AS pid p model AS modelo SUBSTRING p m
  • 从 MySQL 将 500 万行加载到 Pandas 中

    我在 本地 网络上的 MySQL 数据库中有 500 万行 连接速度非常快 而不是在互联网上 与数据库的连接工作正常 但如果我尝试这样做 f pd read sql query SELECT FROM mytable engine inde
  • 用教义 2 DBAL 连接子查询

    我正在重构 Zend 框架2应用程序使用学说 2 5 DBAL 而不是 Zend DB ZF1 我有以下 Zend Db 查询 subSelect db gt select gt from user survey status entrie
  • 使用 php 和 mysql 计算日期差(以小时为单位)

    我如何使用 php 和 mysql 找到以小时为单位的日期差异 Use TIMEDIFF http dev mysql com doc refman 5 1 en date and time functions html function
  • MySQL Tinybit(1) 通过视图的列

    我有一个连接 2 个表的视图 其中一个表具有表示布尔值的tinyint 1 类型的列 该表在连接时并不总是有条目 因此当行丢失时视图需要采用 0 false 值 我希望视图公开 TINYINT 1 类型且 NOT NULL 类型的列 因为它
  • PDO获取最后插入的ID

    我有一个查询 我想获取插入的最后一个 ID 字段ID是主键并且自动递增 我知道我必须使用这个声明 LAST INSERT ID 该语句适用于如下查询 query INSERT INTO cell place ID VALUES LAST I
  • MySQL InnoDB引擎是否对只读事务运行任何性能优化

    根据参考文档 只读事务标志可能会提示存储引擎运行一些优化 设置会话事务只读 如果事务访问模式设置为 READ ONLY 则对表进行更改 被禁止 这可能使存储引擎能够提高性能 不允许写入时可能进行的改进 InnoDB引擎是否对只读事务运行这样
  • 在 Python 中,如果我有 unix 时间戳,如何将其插入 MySQL 日期时间字段?

    我正在使用 Python MySQLDB 我想将其插入 Mysql 中的 DATETIME 字段 我该如何使用cursor execute 来做到这一点 要将 UNIX 时间戳转换为 Python 日期时间对象 请使用datetime fr
  • 如何在没有 DROP 数据库权限的情况下从命令行删除所有 MySQL 表? [复制]

    这个问题在这里已经有答案了 如何使用命令提示符删除 Windows MySQL 中的所有表 我想这样做的原因是我们的用户有权访问数据库删除 但无权重新创建数据库本身 因此我们必须手动删除表 有没有办法一次删除所有表 请记住 大多数表都与外键
  • 使用表白名单选项更新 Debezium MySQL 连接器

    我正在使用 Debezium 0 7 5 MySQL 连接器 并且我试图了解如果我想使用以下选项更新此配置 最好的方法是什么table whitelist 假设我创建了一个连接器 如下所示 curl i X POST H Accept ap
  • DataTables 第 2 页的分页未调用放大弹出窗口

    所以我有这个启用分页的数据表 我编码了一种方式 以便用户可以编辑表的行 当用户调用它在放大弹出窗口中打开的编辑页面时 它在第 1 页 从第 2 页起都运行良好 DataTable 及其前面停止调用 Magnific Popup 我只是不明白
  • MySQL 两种日期格式之间的转换

    用户将以这种格式输入日期 2017 年 2 月 17 日 存储在 mysql 数据库中的日期格式如下 2015 02 17 00 00 00 我想做的是 SELECT FROM insurance where DATE FORMAT in
  • 无法加载身份验证插件“caching_sha2_password”

    我正在将 MySQL 8 0 与 MySQL Workbench 连接并收到以下错误 无法加载身份验证插件 caching sha2 password dlopen usr local mysql lib plugin caching sh
  • 如何对字段数据进行分组?

    我有 sql 查询来显示数据 SELECT artikel foto naam fotografer id fotografer name fotografer customer first name customer last name

随机推荐

  • Sklearn 随机森林回归器的错误

    当尝试使用 y 数据拟合随机森林回归器模型时 如下所示 0 00000000e 00 1 36094276e 02 4 46608221e 03 8 72660888e 03 1 31375786e 04 1 73580193e 04 2
  • 如何从 iPhone 中删除 coredata

    您知道当您更改实体结构时如何重置 iPhone 模拟器上的核心数据存储吗 当我创建的核心数据存储的新版本与我上次在 iPhone 上运行的版本不同时 是否需要执行类似的过程 如果可以的话 请问如何 Thanks 只是为了方便起见 除非您编写
  • CMS 在 .NET 中使用不在本地受信任证书存储中的证书链进行签名

    我有存储在网络上的 X509 证书 我可以从远程 Windows 证书存储中读取链 我需要签署一些数据并将链包含到签名中 以便以后可以对其进行验证 问题是我找不到将证书链放入 CsmSigner 的方法 我读到它从构造函数参数中获取证书并尝
  • PostgreSQL:“按分钟”运行查询的行数

    我需要每分钟查询截至该分钟的总行数 到目前为止我所能达到的最好成绩并不能解决问题 它返回每分钟的计数 而不是每分钟的总计数 SELECT COUNT id AS count EXTRACT hour from when AS hour EX
  • Python BigQuery 超时确实很奇怪

    我正在构建一项将数据流式传输到 bigquery 的服务 如果我删除需要 4 5 分钟加载的部分 我正在预缓存一些映射 则以下代码可以完美运行 from googleapiclient import discovery from oauth
  • Ruby 2.3 - 向 net:http 请求添加超时错误和通知

    我有一个工作系统可以产生错误并将其发送给活动管理员使用 例如 在活动管理中 对于我们 CMS 的特定页面 该页面可能会执行 url must be accessible http www exmaple com field url part
  • 使用 stack 安装 shuffle 库时出错

    Using stack 1 2 0 and LTS 7 0我在安装时遇到以下错误shuffle https hackage haskell org package shuffle 图书馆 cabal get shuffle cd shuff
  • 滚动时删除#anchor-id

    我正在使用这个jqueryhttp css tricks com examples SmoothPageScroll http css tricks com examples SmoothPageScroll 创建平滑的页面滚动 但是每次我
  • 加入同一存储库旧版本的历史记录

    我有一个包含这段历史的存储库 A B C D 然后 这个存储库被 拆分 基本上 使用 git subtrees 创建了另一个存储库 其历史记录从 D 开始 现在 我有另一个具有这段历史的存储库 The same D as the other
  • 使用 C# 写入 Excel 文件的最佳和最快方法是什么?

    我正在尝试使用 OLEDB 没有自动化 写入 Excel 文件 我有大约 500 行数据 这些数据是从其他应用程序获取的 然后使用 INSERT INTO 查询将其一一写入 Excel 文件 我确信从其他应用程序读取数据没有延迟 我查了一下
  • 发现同一依赖程序集的不同版本之间存在冲突

    我目前使用 net 3 5 框架和 microsoft interops 在 Visual Studio 中编写一个程序来与 Office 产品交互 我的 app config 文件有问题 每次我编译我的解决方案 重建或构建它时 错误列表中
  • 高分辨率图像 IE 浏览器渲染

    我正在针对这些更高分辨率的显示器 尤其是新的 iPad 优化我的网站 我按照我想要的方式格式化了网站 我只是增加了每个图像的分辨率 但仍然将其限制为我当前拥有的 DIV 例如 我有一个分辨率为 483x246 的图像 并将其适合设置大小为
  • 绕过 C++ 中的复制语义

    请考虑这段代码 class A int main std vector a test test push back A 构造函数和析构函数将被调用两次 内存将被分配两次并且对象将被复制 现在这不仅可能对性能不利 还可能导致运行时错误 特别是
  • jQuery文件上传不提交额外参数

    我需要使用 jQuery 文件上传控件中提供的 formData 参数在提交时将附加数据发送到服务器 formData 的默认实现是调用一个函数 该函数获取表单中的所有控件并将它们序列化为数组 使用 jQuery serializeArra
  • 在 Windows 7 64 位上运行 gem 安装时出错

    我刚刚使用 ruby installer org 的安装程序安装了 ruby 1 9 2 p136 现在我正在尝试安装 Rails 当我执行 gem install Rails 时 出现以下错误 C Users Clayton USA gt
  • 如何使用mockito模拟字符串?

    我需要模拟一个测试场景 其中我调用getBytes String 对象的方法 我得到一个 UnsupportedEncodingException 我尝试使用以下代码来实现这一点 String nonEncodedString mock S
  • 使用 jquery 验证插件滚动到特定错误

    我在这里找到了关于如何处理错误和滚动的很好的参考 如何在 jquery 验证器插件中发生错误时触发事件 https stackoverflow com questions 2885346 how to fire an event on er
  • 我们可以将值的正则表达式放入 DTD 中吗?

    我想知道是否有一种方法可以将正则表达式与属性值关联起来 就像 XML 模式中的那样
  • C# 中的抽象枚举

    有没有办法制作一个 protected enum abstract in C 基类示例 protected abstract enum commands CS0106 protected abstract void useCommands
  • 在 SQL 表的列中分离大小相关数据是否更有效?

    我有一个 MySQL 数据库表 其中有一列类型为 varchar 386 我选择这个字符数是因为我事先计算了最长条目的字符数 我目前有 400 000 个条目 但预计会随着时间的推移而增加 我进行了一些测试 发现大约 390 000 个条目