mysql - 拥有重复的数据库值是否比查询更多次更好?

标签 mysql database database-design

考虑一个名为 users 的表和一个名为 votes 的表。 一个用户有一个 id 和一个 country 列。 每一张选票都属于一个用户,但是检索选票的目的是找出它来自哪个国家。因此,您需要查询一次以获得投票,然后再查询用户表以获得国家/地区。

考虑到一个大型的、多次查询的数据库,是只为投票表添加一个国家列并使其与用户中的列重复还是只使用上述方法更好?

最佳答案

是的。不,也许吧。

您问题的答案取决于您在问题中未提及的几件事。首先要注意的是,在大多数情况下,VKP 的答案中的查询已经足够了。

其次,如果country 是一个完整的国家/地区名称,那么存储完整的国家/地区名称(可能会很长)可能会大大扩展表的大小。这种大小的增加实际上可能会减慢某些查询的速度,而不是进行连接。当然,对于 2 个或 3 个字符的代码,或者如果 votes 中的记录宽度已经是几百个字节,这就没有那么重要了。

但是,也许最重要的考虑因素是您是希望在用户当前国家/地区计票,还是希望在投票时分配给用户的国家/地区计票?第一个选项表示始终使用 join 来获取当前值。第二个是在 votes 表中包含 country 的非常有力的论据。

关于mysql - 拥有重复的数据库值是否比查询更多次更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31944237/

相关文章:

mysql - 为什么 "explain"返回的行不等于 count()?

php - 时间戳转换

android - Clear Data on App Settings 是否会清除为该特定应用程序存储的所有 Android KeyStore?

arrays - PostgreSQL 可以对数组元素进行唯一性约束吗?

database-design - 正确存储构建 "Last seen Products"

mysql - Skype 按摩系统的数据库架构

mysql - MYSQL中用SUM连接表的问题

php - MySQL:无法更新现有的 NULL 值

Clojure 中的数据库函数式编程

php - 保护 SQL 密码的最佳方法