向 1M 行表添加外键对性能的影响

dri*_*can 4 mysql innodb foreign-key database-design

我有一个运行 MariaDB + InnoDB 的电子商务数据库,它有一个表来存储交易 (T) 和另一个存储报价 (Q)。

我想通过在引用 Q 的 T 上添加外键来建立 T 和 Q 之间的连接。

考虑到Q有超过100万行(不断增长)和T大约10万,你认为在日常操作中向Q添加表T中的外键会对性能造成重大影响吗?另一种方法是添加一个没有外键的简单 INT 列。或其他任何东西,我愿意接受建议:)

详情:

  • T 大约有 20 行,主要是 (SHORT) INTEGERs、其他一些外键和几个 DateTime 字段
  • Q 有 2 个 SHORTINT 字段和几个 VARCHAR 字段(每个 255b)。

预先感谢您的见解。

Vér*_*ace 5

如果您的数据有保证,您最好维护外键 (FK) 约束。

MySQL 将自动创建一个索引 - FK 必须引用一个 UNIQUE KEY(显然,可以是 PRIMARY KEY (PK) - 从这里开始)。

关于为什么在数据库中应用数据约束是一个非常好的主意,请参阅此处的许多原因。T 表上的索引将以插入的小命中为代价提高查找速度。

相信我,通过使用数据库功能而不是自己尝试这样做,您会为自己省去很多痛苦。


归档时间:

查看次数:

9381 次

最近记录:

6 年,11 月 前