0

我有一个 MySQL 数据库,它应该包含大约 50-1 亿条记录。

我的表字段是:TABLE_ID (INT), TABLE_STRING (VARCHAR 255), TABLE_BOOL (INT)

TABLE_ID是我的主键,但我需要确保它TABLE_STRING对于表中的所有行都是唯一的。

我应该设置TABLE_STRING为索引并使用我的脚本来SELECT检查字符串是否已经存在还是应该TABLE_STRING在我的表设置中设置为唯一的?

有没有其他方法可以实现这一目标?如果不是,以上哪一项更好?

谢谢,

4

2 回答 2

1

如果您没有空间问题,那么您可以轻松地为该TABLE_STRING字段添加一个 UNIQUE 索引。

这将为该字段创建一个唯一索引,如果您尝试添加重复数据(插入/更新操作),它将提醒您。

由于您有大量行并且该字段是 VARCHAR(255) 的事实,因此预计索引文件会非常大。

但是,如果您确实对空间有顾虑,那么您可能想要删除TABLE_ID并使用 theTABLE_STRING作为您的主键(这将是唯一的)。

我个人只是在TABLE_STRING字段上添加唯一索引。

请注意,如果您已经有行包含该字段的重复内容,则添加索引的操作最初可能会失败。一个好的做法是首先检查该字段中是否有任何重复数据。

高温高压

于 2012-09-10T17:30:35.100 回答
0

如前所述,您应该UNIQUETABLE_STRING. 您还应该研究分区,因为它将通过在每个分区中具有本地索引来提高索引的性能。

于 2012-09-10T17:35:47.100 回答