mysql中的varchar和复合主键?

时间:2012-04-11 23:32:57

标签: mysql performance primary-key varchar

我正在开发一个日志记录数据库,在这种情况下记录的组件的ID不是由数据库本身决定的,而是由发送报告的系统决定的。系统ID是唯一的varchar,组件的id由系统确定(在一些遥远的位置),因此当组件的主键是system_id + component_id时,保证唯一性。

我想知道这种方法是否有效。我可以使用自动递增的整数作为id,但这意味着我必须在插入之前执行select操作,这样我才能获得这个生成的id,而不是使用系统提供的已知字符串id。

数据库将是小规模的,不超过几十个系统,每个系统都有几十个组件,并且可能有数千个组件更新(另一个表)。旧更新将定期转储到文件中并从数据库中删除,因此它不会变得“大”。

任何推荐?

2 个答案:

答案 0 :(得分:1)

我倾向于将自动递增的整数作为主键,并将索引放在system_id和component_id上。您在插入之前的选择将非常便宜和快速。

答案 1 :(得分:1)

我相信你会发现使用varchar()键可以很好地处理几百万行的表。

测试很容易。只需导入您的数据。