mysql索引值

mysql 索引值生成规则

MySQL索引值是如何生成的取决于具体的数据类型和列的具体定义。对于大多数数据类型,MySQL会为索引键值使用原始的数据。对于字符串类型(如VARCHAR, CHAR, TEXT),索引键值可能是字符串的前缀,这是因为索引的目的是减少必须存储和检索的数据量。

以下是一些常见的数据类型和索引生成规则的例子:

对于整数类型(TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT),索引键值就是整数的原始值。

对于浮点数类型(FLOAT, DOUBLE),索引键值是浮点数的二进制表示。

对于日期和时间类型(DATE, DATETIME, TIMESTAMP, TIME),索引键值是日期或时间的原始值,也可能是转换成整数的表示(例如,日期可以转换成从一个固定点(如2000-01-01)开始的天数)。

对于字符串类型,索引键值可能是字符串的前缀,长度由列定义中的长度属性或者索引定义中的前缀长度指定。

对于BLOB和长文本类型(BLOB, TEXT),可以为其部分内容创建索引,通常是前512字节或者更少。

MySQL varchar 索引值是如何生成

MySQL中的VARCHAR类型用于存储可变长度的字符串。当一个VARCHAR列被索引时,索引的大小通常是不固定的,因为它依赖于列中存储的数据。为VARCHAR列创建索引时,MySQL会为索引值动态生成其大小。

当创建索引时,MySQL会为每个索引列分配一定的前缀长度(通常是前100个字符)以构建索引。这样的索引被称为“动态长度”或“变长”索引。这样做的目的是为了减少索引的大小,并允许索引覆盖更多的查询模式。

以下是创建带有VARCHAR列和索引的表的示例:

CREATE TABLE example (
id INT PRIMARY KEY,
text VARCHAR(255),
INDEX (text)
);

在这个例子中,text列是VARCHAR类型,并且有一个索引。当数据被插入到这个表中,并且text列的值被索引时,MySQL会为每个值动态生成索引大小。

例如,如果text列的值是"Hello, World!“,索引将仅包含足够的前缀来区分这个值与其他值(假设前100个字符足够区分)。如果另一行的text列值是"Hello, MySQL!”,索引也只会包含前100个字符来区分这个值。这样可以减少索引的大小,并允许更快的查询处理

在这里插入图片描述

相关推荐

  1. mysql 索引和null的关系

    2024-07-16 01:40:02       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 01:40:02       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 01:40:02       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 01:40:02       62 阅读
  4. Python语言-面向对象

    2024-07-16 01:40:02       72 阅读

热门阅读

  1. 书籍跳跃游戏(4)0715

    2024-07-16 01:40:02       19 阅读
  2. livecd工具下载地址

    2024-07-16 01:40:02       19 阅读
  3. 网站架构核心要素

    2024-07-16 01:40:02       20 阅读
  4. postman实现接口关联

    2024-07-16 01:40:02       18 阅读
  5. IPython 使用技巧整合

    2024-07-16 01:40:02       19 阅读
  6. ArkTS学习笔记_封装复用之@builderParam装饰器

    2024-07-16 01:40:02       18 阅读
  7. sklearn基础教程:掌握机器学习入门的钥匙

    2024-07-16 01:40:02       20 阅读
  8. Kubernetes面试整理-Helm是什么?

    2024-07-16 01:40:02       19 阅读
  9. 去除重复数字

    2024-07-16 01:40:02       22 阅读