mysql - mysql中的文本索引与整数索引

标签 mysql optimization indexing

无论如何,我总是试图在表上有一个整数主键。但现在我怀疑这是否总是必要的。

假设我有一个产品表,每个产品都有一个全局唯一的 SKU 编号 - 这将是一个包含 8-16 个字符的字符串。为什么不把它变成PK呢?通常我会让这个字段成为一个唯一索引,然后有一个自动递增的 int 字段作为 PK,因为我认为它会更快、更容易维护,并且允许我做一些事情,比如轻松添加最后 5 条记录。

但就优化而言,假设我只会匹配全文字段,然后进行文本匹配查询(例如 %%),你们能想到不使用基于文本的主键的任何理由吗?可能是 varchar() 类型?

干杯, 伊曼克

最佳答案

使用 SKU 编号作为主键有一定的意义。您会希望将其编入索引以快速按 SKU 进行搜索。 SKU 是 natural index .

但是它有一些惩罚:

  • 性能(如 Coronatus 所说)

  • 缺乏设计灵 active 。如果出于任何原因,SKU 不再是全局唯一的,您将被迫不仅更改表结构,还更改所有查询。

  • 更改一件商品的 SKU 将迫使您更改数据库中的所有关系。

关于mysql - mysql中的文本索引与整数索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2578117/

相关文章:

php - 有没有办法输出用户每天登录的最早时间/日期?

c++ - 缓存 std::vector 的大小是否更快

android - UV 和顶点的单独索引

php - 数据库列表延迟

mysql - parentID和childID同表时如何删除级联?

mysql - VS 中无法连接 MySQL 到 EF6

c++ - 在调用 std::map::find 时跟踪节点遍历?

java - 哪个更好/更有效 : check for bad values or catch Exceptions in Java

ios - 设置数据库中索引值的数组

java - java中两种不同类型的索引数组