我有一个MySQL数据库应该包含大约5000万到1亿条记录。
我的表格字段为:TABLE_ID (INT), TABLE_STRING (VARCHAR 255), TABLE_BOOL (INT)
TABLE_ID
是我的主键,但我需要确保TABLE_STRING
对于表格中的所有行保持唯一。
我应该将TABLE_STRING
设置为索引并使用我的脚本使用SELECT
来检查字符串是否已经存在,还是应该将TABLE_STRING
设置为我的表设置中的唯一?
有没有其他方法可以实现这一目标?如果不是上述哪一个更好?
谢谢,
答案 0 :(得分:1)
如果您没有空间问题,那么您可以轻松地为TABLE_STRING
字段添加唯一索引。
这将为该字段创建一个唯一索引,如果您尝试添加重复数据(插入/更新操作),它将提醒您。
由于您有大量的行,而且字段为VARCHAR(255),因此索引文件非常大。
如果你确实对空间有疑虑,那么你可能想放弃TABLE_ID
并使用TABLE_STRING
作为主键(这将是唯一的)。
我个人只会在TABLE_STRING
字段中添加唯一索引。
请注意,如果您已经拥有该字段具有重复内容的行,则添加索引的操作最初可能会失败。一个好的做法是首先检查该字段中是否有任何重复数据。
HTH
答案 1 :(得分:0)
如前所述,您应该在UNIQUE
上创建TABLE_STRING
索引。您还应该研究分区,因为它将通过在每个分区中包含本地索引来提高索引的性能。