Swi*_*ftD 1 sql optimization database-design
我的大多数数据库表都有一个明确的唯一索引,通过它可以在90%的时间内完成查找,但我对这一点有点不确定 - 我有一个表跟踪我数据库中项目的用户评级总数,我现在想要添加另一个表,用ip地址列跟踪个人评级,以确保没有人可以评价两次.由于我可以看到这成为一个很大的高使用率表,因此正确优化它非常重要.(MYSQL表)
该表将包含以下字段:
rating_id(始终 - 唯一),item_id(始终 - 不唯一),user_id(可选 - 不唯一),ip_address(始终 - 不唯一),rating_value(始终 - 不唯一),has_review(bool)
现在我设想90%的查询是这样的:
当用户评价某些内容时 - 选择item_id = x和ip_address = y,(如果rows = 0)插入评级
在用户帐户页面中 - 选择ip_address = x或username = y的位置
现在搜索到的字段都不是唯一的,我仍然可以将它们用作索引(例如项目_id和ip_address),我可以有两个索引并且这仍然会提高非索引表的性能吗?
您可以拥有唯一或不唯一的索引.您可以在一个表上拥有多个索引.您还可以同时在多个字段上拥有索引.
通常,如果使用得当,这些将改善查询性能,尽管这可能以插入性能为代价.
如果要显示聚合评级,则可以通过定期计算评级结果并在数据库或应用程序中缓存结果来获得更好的性能.