我的大多数数据库表都有一个明确的唯一索引,90% 的时间都通过该索引完成查找,但我对此有点不确定 - 我有一个表可以跟踪数据库中项目的用户评分总数,我现在想要添加另一个表,使用 ip 地址列跟踪个人评级,以确保没有人可以对某事进行两次评级。因为我可以看到这成为一个大的、高使用率的表,所以正确优化它很重要。(MYSQL 表)
该表将包含以下字段:
rating_id(总是 - 唯一),item_id(总是 - 非唯一),user_id(可选 - 非唯一),ip_address(总是 - 非唯一),rating_value(总是 - 非唯一),has_review(布尔)
现在我设想 90% 的查询是这样的:
当用户评价某物时 - 选择 item_id = x 和 ip_address = y,(如果 rows = 0)插入评价
在用户帐户页面中 - 选择 ip_address = x 或 username = y
现在搜索到的所有字段都不是唯一的,我是否仍然可以将它们用作索引(例如 item _id 和 ip_address),我可以有两个索引并且这仍然会提高非索引表的性能吗?