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

use*_*927 8 mysql indexing optimization

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

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

但就优化而言,假设我只是匹配全文字段而接下来正在进行文本匹配查询(例如像%%),你们可以想到任何不使用基于文本的主键的原因,很可能是类型VARCHAR()?

干杯,伊曼克

bor*_*jab 6

使用SKU编号作为主键有一定意义.您希望将其编入索引以快速进行SKU搜索.SKU是一个自然指数.

但它有一些处罚:

  • 表演(如Coronatus所说)

  • 缺乏设计灵活性.如果由于任何原因,SKU不再具有全局唯一性,您将不仅要更改表结构,还要更改所有查询.

  • 更改一个项目的SKU将强制您更改数据库中的所有关系.