长字符作为主键的效果

时间:2015-12-02 06:47:44

标签: mysql indexing

我正在计划一个拥有迷你会计科目表的数据库。我的帐户代码名称如下:

  • CURRENT_DEBTORS
  • CURRENT_CREDITORS
  • CASH_AT_BANK

我正在考虑将帐户代码用作帐户数据库中的主键,这意味着它将成为事务表中的外键。该字段类似于MySql中的CHAR(20)。交易表每月将获得大约10,000个条目。

这个长期字符索引会如何影响性能?如果我也可以使用代理键,但我也不愿意。 (当然,我不太担心磁盘空间。)

1 个答案:

答案 0 :(得分:-1)

从技术上讲,你的问题的答案是不会对性能产生巨大影响,但它会有一些,你需要在你的系统上测试它才能知道真正的影响。

但实际上,答案是:不要这样做。将这些代码存储在表中,为每个代码提供一个唯一的整数id(AUTO_INCREMENT列),并将该整数作为外键。这是正确规范化的,使用的空间比每行中额外的CHAR(20)少得多,并且会降低性能。