mysql - 用于提高 MySQL 性能的 Varchar、Char 或 Binary

标签 mysql database database-design relational-database varchar

我正在使用 MySQL,并且在某些地方读到在索引列中使用 CHAR 比使用 VARCHAR 快 20%。在其他地方,似乎只有当表没有任何 VARCHAR 列时它才具有好处。这是真的吗?

我想要存储的信息是 GUID。如果数据库使用字符集 utf8,将数据存储在 BINARY 中还是 CHAR 中是更好的选择吗?每次我想要通过 GUID 进行插入、更新或查询过滤时,是否值得将我的数据转换为 BINARY?我更喜欢更快的数据访问而不是节省磁盘使用量。

最佳答案

与可变宽度类型相比,任何固定宽度列类型都有助于更快的查找操作。除非您的表已分区,否则即使在不涉及可变宽度类型的操作上,可变宽度类型也会降低性能。为了考虑,请仔细考虑一下当所有列都是固定宽度时以及当某些列不是固定宽度时如何迭代列中的所有值的算法:

对于全固定宽度的表(或分区),您可以使用简单的指针算术,每次循环时添加分区中所有列的组合数据宽度值。

但是,如果存在任何可变宽度列,则需要根据列的实际磁盘“宽度”计算每次迭代添加到指针的量。

关于mysql - 用于提高 MySQL 性能的 Varchar、Char 或 Binary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12161933/

相关文章:

MySQL:存储过程可以调用Java程序吗?

sql - 对列表中的项目进行编号 - 最佳方法?

MySQL 关于排序大小和效率

database - Azure 流分析输出到 Azure Cosmos DB

mysql - codeigniter- 3 分页加载所有页面上的所有数据

MySQL - 从平面表移动到第一范式

mysql - 我应该为每个 Web 应用程序创建特殊架构还是将其全部放在一个架构中?

mysql - 如何删除mysql数据库中的数组?

mysql - MYSQL 中的广度优先搜索查询

php - LAST_INSERT_ID() 链接双表插入