假设我们有 10 亿条记录,并希望按 post_type 将它们存储在 One
或 Three
表中。
post_id -> primary key
post_type -> ( page, group, user )
user_id -> index
date -> index
注意:我们有足够的 RAM 来存储缓冲池中的所有数据。 (约 40 GB)
在我们的情况下,Reading
从数据库中太多了
问题是:虽然整个数据都在缓冲池(RAM)上,性能
与3
分隔有什么不同吗表并Join
它们,或者有1
大表并从中Select
而不进行任何Join
。
在某些情况下,我们最好为其他类型的轻型查询使用单独的表。
但是我们害怕 JOINS
。
最佳答案
我找到了下面关于 sql server 中的大型连接的文章。根据本文中的信息,一个非常大的表可能比连接三个大表更快。但是,这是从 2006 年开始的,因此某些信息可能已过时。
http://www.mysqlperformanceblog.com/2006/06/09/why-mysql-could-be-slow-with-large-tables/
编辑:同样值得注意的是,您应该查看每个操作的使用频率。如果您需要经常连接表,那么您可能希望使用一张表。如果您加入表格的频率较低,则可能需要使用三个表格。
关于mysql - Innodb缓冲池和多重连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22644229/