使用 ASCII/拉丁字符集是否可以加快数据库速度?

2024-03-28

看起来,对大多数字段使用 ASCII 字符集,然后仅对需要它的字段指定 utf8,可以将数据库必须执行的 I/O 量减少 100%。

有人知道这是真的吗?

更新:以上并不是我的问题。我应该说:使用拉丁语作为默认字符集,然后只为需要它的字段指定 utf8mb4。我们的想法是:使用 1 字节与 2 字节相比,I/O 应该提高 100%。对困惑感到抱歉。


简答: 不值得担心。

长答案:

两个问题:

  • Speed:

将两种编码与相应的_bin(ascii_bin或utf8_bin)进行比较COLLATION就像比较字节一样简单——所以没有显着差异。其他排序规则可能有所不同,其中 ASCII 速度更快。But与获取行等的工作量相比,差异微不足道。

  • Space:

Ascii 是 utf8 的子集。 utf8 为每个 ascii 字符仅存储 1 个字节,就像 ascii 一样。所以,没有空间差异。 (西欧的重音字母需要 1 字节 latin1 或 2 字节 utf8;因此不兼容且大小不同。)空间会导致缓存,从而导致性能上的轻微差异。

对于英文文本,节省 0%。对于欧洲人来说,latin1 只能节省几个百分点;对于世界上大多数其他地方来说,utf8 是唯一可行的解​​决方案。对于中文和Emoji来说,utf8mb4是必须的。

  • 临时表

在某些情况下,字符串占用的空间会扩展到潜在的最大值。country_code CHAR(2) CHARACTER SET ...对于 ascii 将占用 2 个字节; utf8 为 6 个字节。

底线:

使用 ascii 表示国家/地区代码、十六进制、邮政编码、uuid、md5 等。如果您要走向国际,和/或需要表情符号,请使您的“字符串”为 utf8mb4。但这样做是因为它是“正确的”,而不是因为你会神奇地获得更快的速度;而是因为它是正确的。你不会的。并在创建表时执行此操作;以后改就是坑。

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

使用 ASCII/拉丁字符集是否可以加快数据库速度? 的相关文章

  • mysql语句中的*星号是什么意思?

    Ex mysql query SELECT FROM members WHERE id id 这意味着选择表中的所有列
  • MySQL+子串怎么做? + 替换?

    我不太擅长 SQL 希望能够变得更好 我在尝试执行某些表操作时遇到一些麻烦 我希望能够从下面的 ProgUID 列中选择子字符串 就像是 SUBSTRING table ProgUID 3 12 这将为我提供 ProgUID P CAMVE
  • mySQL MATCH 跨多个表

    我有一组 4 个表 我想对其进行搜索 每个都有全文索引 查询可以使用每个索引吗 CREATE TABLE categories id int 5 unsigned NOT NULL auto increment display order
  • PHP 选择后立即删除

    我有一个 PHP 服务器脚本 它从 MySQL 数据库中选择一些数据 一旦我将 mysql query 和 mysql fetch assoc 的结果存储在我自己的局部变量中 我就想删除我刚刚选择的行 这种方法的问题在于 PHP 似乎对我的
  • ActiveRecord3死锁重试

    Rails 3 或 ActiveRecord 3 是否有任何插件可以复制旧版本死锁重试 http agilewebdevelopment com plugins deadlock retry插入 或者 该插件仍然适用于 Rails 3 吗
  • MySql 最后插入 ID,连接器 .net

    我正在使用 MySql Connector net 我需要获取最后一个查询生成的插入 id 现在 我假设返回值是MySqlHelper ExecuteNonQuery应该是最后一个插入id 但它只返回1 我正在使用的代码是 int inse
  • 如何使用 MySQL 的 LOAD DATA LOCAL INFILE 在导入 CSV 时将字符串日期更改为 MySQL 日期格式

    我正在使用 MySQL 的 LOAD DATA LOCAL INFILE SQL 语句将数据从 CSV 文件加载到现有数据库表中 下面是一个 SQL 语句示例 LOAD DATA LOCAL INFILE file csv INTO TAB
  • 如何在 Laravel 查询中使用多个 OR,AND 条件

    我需要 Laravel 查询帮助 我的自定义查询 返回正确结果 Select FROM events WHERE status 0 AND type public or type private 如何写这个查询Laravel Event w
  • 如何正确转义mysql?

    我刚刚发现如果我写 select from tbl where name like foo 然后添加 foo 作为参数及其值 a 用户数据 它不会正确转义 我勒个去 它想要 a 即使我使用参数 我还是忍不住觉得我对 sql 注入持开放态度
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • Mysql 中 UNION 子句的替代方案

    我有两张桌子 表 a 表 b table a ID 1 2 3 4 5 7 table b ID 2 3 4 5 6 我必须得到这样的输出而无需UNION命令 ID 1 2 3 4 5 6 7 注意 我有一个联合解决方案 select fr
  • Apache、PHP 和 MySQL 可移植吗?

    我可以在外部硬盘上运行 Apache PHP 和 MySQL 吗 我需要这个 因为我在不同的地方工作 计算机 有时我没有安装和配置所有使用的应用程序 当然可以 XAMPP http www apachefriends org en xamp
  • MySQL MIN/MAX 所有行

    我有桌子Races与行ID Name and TotalCP 我选择分钟 TotalCP FROM Races 但是我想选择具有最小值的整行 我如何在单个查询中做到这一点 从聚合值获取整行的一般形式是 SELECT FROM Races W
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教
  • 免费 PHP 登录库 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • 同一配置文件上的两个不同提供程序

    我在用着实体框架 6 1 0 I have 2 家提供者 MysqlClient 和 SQLServerCE 我需要创建2个不同的DBContext 这迫使我创造2个配置类因为mysql有一些不同的东西 但是当我初始化应用程序时 Datab
  • 如何从shell脚本自动登录MySQL?

    我有一个 MySQL 服务器 其中有一个用户和密码 我想在 shell 脚本中执行一些 SQL 查询而不指定密码 如下所示 config sh MYSQL ROOT root MYSQL PASS password mysql sh sou
  • 映射 mysql 中同一个表的多个值

    您好 我必须使用另一个表中的值 id 获取文本值 表 1 包含值 ID 表 2 包含名称和值 ID 表 1 SEVERITY OCCURENCE DETECTABILITY 2 3 4 表 2 id name value 1 Very Hi
  • SQL不允许表中有重复记录

    如何使其不添加重复项 我想让它通过 ID 之外的所有其他列进行检查 我希望这个无效 ID col1 col2 col3 1 first middle last ID col1 col2 col3 2 first middle last 我希

随机推荐

  • 当 docker 使用 `/bin/sh -c` 运行节点脚本时,SIGTERM 无法到达节点脚本

    当我的 Dockerfile 结尾时 CMD node docker 使用以下命令运行该容器 bin sh c node 而不是简单地node 我知道 我可以这样做CMD node 我认为这种行为实际上很好 因为这意味着在容器内部PID1
  • Xamarin Forms iOS 错误任务图标

    我认为有一个非常简单的问题 但我不太确定我是否做错了什么或者这是否是 Xamarin 问题 我有一个 iOS Xamarin Forms 项目 在该项目中 我无法设置按两次主页按钮时显示在 任务 视图中的 任务 图标 它始终显示 xamar
  • 对字符串不变性的困惑

    我有以下代码 public class StaticImplementer private static String str ABC public static void main String args str str XYZ 问题 这
  • C++ 类对象的引用和非引用返回 - 为什么输出相同?

    考虑以下代码 class Test public int data Test data 9 Test myfunction void print cout lt lt data lt
  • Symfony 应用程序 - 如何将计算字段添加到 Propel 对象?

    处理 Propel 对象的计算字段的最佳方式是什么 假设我有一个对象 Customer 它有一个相应的表 customers 并且每一列对应于我的对象的一个 属性 我想做的是 在视图 A 上使用它时 向我的对象添加一个计算属性 已完成订单数
  • 将 ncurses 窗口保持在前台

    我的应用程序正在使用 ncurses 并且有几个正在不断更新的窗口 在该应用程序中 当用户点击 q 时 我有一个充当 消息框 例如对话框 的窗口 询问他们是否要关闭 在其他窗口更新之前 这一切正常 此时 其他窗口将绘制在对话框上 使其 部分
  • 如何使用 id 获取 JavaFx 中的元素?

    我是 FXML 新手 我正在尝试使用以下命令为所有按钮单击创建一个处理程序switch 然而 为了做到这一点 我需要使用 和 id 获取元素 我已经尝试了以下方法 但由于某种原因 也许是因为我是在控制器类中而不是在主类中执行此操作 我收到了
  • DataOutputStream#writeBytes(String) 与 BufferedWriter#write(String)

    我想为我的报告创建一个 HTML 文件 报告中的内容可以通过使用创建BufferedWriter write String File f new File source htm BufferedWriter bw new BufferedW
  • 计算 Matplotlib 文本旋转[重复]

    这个问题在这里已经有答案了 我试图弄清楚如何在 matplotlib 中旋转文本以与图中的曲线对齐 但我还没有弄清楚什么转换可以为旋转文本提供正确的坐标系以匹配数据坐标中的特定斜率 这是绘制一条线并尝试沿其对齐一些文本的最小示例 Make
  • 如何设置AlertDialog中正负按钮的顺序?

    为什么我要这样做完全是另一个讨论 但我需要找出使我的所有警报对话框在右侧都有肯定按钮的最佳方法 请注意 在 3 0 及更低版本中 按钮通常显示为 确定 取消 而在 4 0 及更高版本中 按钮通常显示为 取消 确定 我想强制我的应用程序以最简
  • Xcode:在每次构建之前运行直接修改源代码的脚本

    我做了什么 我有一个脚本 阅读一些配置文件来生成源代码片段 找到相关的 Objective C 源文件并 将源代码的某些部分替换为步骤 1 中生成的代码 和一个 Makefile 它有一个特殊的时间戳文件作为 make 目标 配置文件作为目
  • Bash:循环直到命令退出状态等于 0

    我在本地计算机上安装了 netcat 并在端口 25565 上运行了一个服务 使用以下命令 nc 127 0 0 1 25565 lt dev null echo Netcat 检查端口是否打开 如果打开则返回 0 如果关闭则返回 1 我正
  • 如何理解 JavaScript 中的 isEqualNode()

    我试图理解 JavaScript 中的 isEqualNode 方法 显然根据 W3 学校提供的定义是这样的 isEqualNode 方法检查两个节点是否相等 如果满足以下所有条件 则两个节点相等 它们具有相同的节点类型 它们具有相同的no
  • HTML5 Websockets 可以在不使用服务器的情况下直接连接 2 个客户端(浏览器)吗? (P2P)[重复]

    这个问题在这里已经有答案了 使用 HTML5 Websockets 我可以直接在 2 个客户端 浏览器 之间打开套接字 假设我知道它们的 IP 地址并且不存在 NAT 遍历问题 我想将一些数据直接从一个浏览器发送到另一个浏览器 本质上是创建
  • 扩展内置集合,内置方法的问题

    我是 Scala 新手 所以请原谅我 如果这是一个愚蠢的问题 但这里是 想象一下 我希望创建一个包含附加方法的扩展 Map 类型 我可以看到几种方法来做到这一点 第一个是组合 class Path V val m Map V Int Def
  • Python multiprocessing.Pool:AttributeError

    我在一个类中有一个方法 需要在循环中完成大量工作 我想将工作分散到我的所有核心上 我写了下面的代码 如果我使用正常的话 它可以工作map 但与pool map 返回错误 import multiprocessing pool multipr
  • IPython笔记本:如何重新加载特定Python文件中的所有模块?

    我在一个文件中定义了许多模块 并添加from myFile import 到我的 ipython 笔记本的第一行 以便我可以将它用作该笔记本中其他部分的依赖项 目前我的工作流程是 modify myFile 重启Ipython内核 重新运行
  • OWL 限制 - 定义仅包含具有特定属性值的属性的类

    我目前正在玩 OWL 尤其是有限制的情况 我正在尝试创建一个执行以下操作的查询 假设我有一个类 Cinema 它具有属性 movies 包含 Movie 类型的对象 Movie 类包含一个名为 genre 的属性 现在我想创建一个 Acti
  • 如何自动设置跨度计数和图标大小

    我正在使用回收器视图和卡片视图来显示应用程序中的图标 我无法弄清楚如何调整应用程序图标的大小并根据屏幕尺寸自动增加 减少跨度计数 这是我正在做的显示它的操作 并且花费计数固定为 3 RecyclerView mrv RecyclerView
  • 使用 ASCII/拉丁字符集是否可以加快数据库速度?

    看起来 对大多数字段使用 ASCII 字符集 然后仅对需要它的字段指定 utf8 可以将数据库必须执行的 I O 量减少 100 有人知道这是真的吗 更新 以上并不是我的问题 我应该说 使用拉丁语作为默认字符集 然后只为需要它的字段指定 u