无论如何,我总是试图在表上有一个整数主键。但现在我怀疑这是否总是必要的。
假设我有一个产品表,每个产品都有一个全局唯一的 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/