MySQL - 两种解决方案之间的最佳性能

标签 mysql sql performance database-design

我需要有关 MySQL 的建议。

我有一个用户表,其中包含 id、昵称、numDVD、金钱和表 DVD,其中包含 idDVD、idUser、LinkPath、计数器。

现在我相信我可以拥有 max. 20 个用户,每个用户大约有 30 张 DVD。

因此,当我插入 DVD 时,我应该有 idDVD(自动增量)、idUser(用户表的相同 idUser)、LinkPath(通用字符串)和计数器,它是一个从 1 到 30 的数字(唯一数字)(取决于每个用户的数量或 DVD)。

问题是处理最后一列“counter”,因为我会从 1 到 30 中选择 2 3 个具有相同 UserId 的随机 DVD。

所以我在想这是否是我的最佳解决方案并且难以处理(对我来说我从未使用过 MySQL)或者最好创建 20 个表(每个用户 1 个)包含 ID 和 DVDname 等。

谢谢

最佳答案

不要创建 20 个表!那太过分了,如果您将来需要添加更多用户怎么办?可靠地维护和更新几乎是不可能的。

更好的方法是:

Table users
-> idUser
-> other user specific data

Table dvd
-> idDvd
-> DVDname
-> LinkPath
-> other dvd specific data (no user data here)

Table usersDvds
-> idUser
-> idDvd

这样,如果一个或多个用户拥有相同的 DVD 就没有问题,因为它只是 usersDvds 表中的另一个条目 - idDvd 值将相同,但 idUser 会不同。要计算用户拥有多少张 DVD,只需执行 SELECT count(*) FROM usersDvds WHERE userId = 1

关于MySQL - 两种解决方案之间的最佳性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7844341/

相关文章:

mysql - 使用级联删除

php - Laravel 中的别名

sql - 如何在 SQL Server 的 View 中使用 else-if 条件?

mysql - 删除比具有相同 id 的另一个表中的行更旧的行

javascript - 为什么要缓存 jQuery 对象?

php - 用php多维数组填充html表

php - 简短的 php/mysql 查询删除两个表选择的位置

c# - 使用 Entity Framework 4.1 时如何调试/分析性能

php - Mysqli Connect 上的未知数据库...但它确实存在

c# - PLINQ (C#/.Net 4.5.1) 与 Stream (JDK/Java 8) 性能对比