mysql - 您如何看待我的数据库架构?

标签 mysql sql database

<分区>

我认为我在设计的数据库架构中没有尽我所能。

我也在用MySQL;

我有 2 个主表:IMEI 和用户;

IMEI 结构:

+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| imei    | varchar(20) | NO   | PRI | NULL    |       |
| user_id | int(11)     | NO   | MUL | NULL    |       |
+---------+-------------+------+-----+---------+-------+

用户结构:

+-------+---------------+------+-----+---------+----------------+
| Field | Type          | Null | Key | Default | Extra          |
+-------+---------------+------+-----+---------+----------------+
| id    | int(11)       | NO   | PRI | NULL    | auto_increment |
| pass  | varchar(2000) | NO   |     | NULL    |                |
+-------+---------------+------+-----+---------+----------------+

现在,我将加入这些表,这意味着每个用户可以有多个 IMEI,我认为这种结构很好。

问题是我从哪里获得每个 IMEI 的一些数据,我想保存它们。 我无法将所有 IMEI 数据保存在一个表中,因为那将是一个巨大的表。认为每个 IMEI 每 30 秒发送一次数据。它很快就会填满我的 table ,因为那将是 120(每小时)* 24 * 30 * 1000 = 86,400,000,这对于一张 table 来说是相当大的。 我想为名称为 data_{IMEI} 的每个 IMEI 创建单独的表,但这样可以创建很多表。

我不知道 MySQL 对多个表的效率有多大,但这里我们谈论的是 1000 个(我的一个很好的估计)表。

这暂时不是问题,但 6 个月或一年后,我可能会遇到问题。我必须预见我的设计。

提前致谢。

最佳答案

我无法将所有 IMEI 数据保存在一张表中,因为那将是一个巨大的表。

你为什么这么认为?一张大表通常比装满表的数据库更好。如果每张 table 都一样,请认真考虑做一张大 table 。

然后,如果速度变慢,您可以对其进行分区(分成 PHYSICAL 单独的部分),但将逻辑表保持为一个表。

过早的优化是万恶之源;)

关于mysql - 您如何看待我的数据库架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20426825/

相关文章:

sql - 如何在 PostgreSQL 中仅 self 加入一部分行?

mysql - 如何规划具有相同ID的数据库?

android - SQLite 数据库查询非常慢(SQLite Asset Helper)

php - Laravel Eloquent 为帖子创建类别

mysql - Ruby, Rails : mysql2 gem, 有人使用这个 gem 吗?稳定吗?

Mysql group post_id 按最大计数状态

mysql - 相关用户和帖子的复杂 MySQL 查询

mysql更新查询在一般日志中但数据没有改变

sql - Oracle SQL开发人员: How to transpose rows to columns using PIVOT function

ios - 连接两列的值并将其与 sqlite 中的一个值进行比较