mysql - 数据库结构重新评估

标签 mysql database performance database-design evaluation

我有 3 个表,全部具有相同的字段:

id  profile_id  group_id    comment     parent_id   registered  updated

其中 group_id 是表的键,因为它代表我网站的 3 个不同部分之一。

因此group_id可以转换为type&special_id。例如type = ('a','b','c') 其中special_id是类型的id。

请记住,我的数据库中还有与这些/这个“核心”表相关的其他表。

最好实现我提出的提高网站效率/规模的建议,还是最好保持表格彼此独立?

最佳答案

简短的回答:如果您没有同时使用具有不同 group_id 的表的查询,那么最好分开。

因为 DBMS (http://en.wikipedia.org/wiki/Database) 应该决定将表加载到内存中。这是快速和高效的。更多数据...假设 1'000'000 行对于将其加载到内存中来说“太多”了。 DBMS 只会抓取硬盘。所以更好的办法就是分开。

但是,如果每个 group_id 只有 10'000 行,并且有很多查询加入这些组,例如 FROM a JOIN b ON b.profile_id = a.profile_id WHERE a.group_id = 'a' AND b.group_id = 'b'通常最好只有一张表,因为 DBMS 可以优化访问时间。

您始终可以使用 EXPLAIN SELECT ... 检查 DMBS 如何处理查询.

关于mysql - 数据库结构重新评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22091836/

相关文章:

php - 将 csv 文件上传到 mysql 数据库。 upload.php 文件中的错误

php - Medoo php sql - 更改搜索词

c# - 检查结果是否来自 SQL 中的特定表

mysql - 关于建筑物和平面图的数据库设计查询

list - 这段 Haskell 代码高效吗?

C++我应该循环并设置一个数组还是手动设置所有以提高性能

MySql GROUP_CONCAT 与 GROUP BY 每组第 n 行

database - Linux 中的开源集群 SQL 数据库

sql-server - 将文件存储在数据库而不是文件系统中?

c# - 返回结果还是先放到变量中?