【发布时间】:2016-03-06 07:52:27
【问题描述】:
我正在计划一个包含小型会计科目表的数据库。我的帐户代码是这样的名称:
- CURRENT_DEBTORS
- CURRENT_CREDITORS
- CASH_AT_BANK
我正在考虑将帐户代码用作帐户数据库中的主键,这意味着它将是事务表中的外键。该字段类似于 MySql 中的 CHAR(20)。交易表每月将获得大约 10,000 个条目。
这个冗长的字符索引将如何影响性能?如果我也有,我可以使用代理键,但也不希望。 (当然,我不太担心磁盘空间)。
【问题讨论】:
-
是
CHAR(20) utf8吗?如果是这样,则需要 60 个字节。如果合适,请设为CHARACTER SET ascii。 -
有时“自然”PK 实际上比添加代理
AUTO_INCREMENTPK 更快更小。一个例子是没有辅助键时。