这是一个具体的例子:
Wordpress 将用户信息(元)存储在名为 wp_usermeta 的表中,您可以在其中获取元键字段(例如:first_name)和元值(约翰)
但是,仅在 50 个左右的用户之后,该表已经打包了大约 1219 条记录。
所以,我的问题是:在大规模的性能方面,将所有元数据作为一个字段的表,还是像 WordPress 那样将所有元数据作为一行的表会更好吗?
在这两种情况下都正确设置了索引。几乎不需要添加新的元数据。请记住,像 wp_usermeta 这样的表必须使用文本/长文本字段类型(大尺寸)才能容纳可以输入的任何类型的数据。
我的假设是,只有当您不知道用户可能需要什么时,WordPress 方法才有效。否则:
- 检索所有元数据需要更多 I/O,因为这些字段没有存储在单行中。该字段未优化。
- 您不能真正在 meta_value 字段上建立索引而不会遭受重大缺点(索引 longtext ?除非它是部分索引......但是,多长时间?)
- 很快,你的数据库就会被很多行弄得乱七八糟,即使是最精确的元数据也会诅咒你的研究
- 没有对开发人员友好。您无法真正发出加入请求来获得所需的一切并正确显示。
不过,我可能会漏掉一点。我不是数据库工程师,我只知道 SQL 的基础知识。