【发布时间】:2012-06-15 21:11:47
【问题描述】:
除了 users 表,Wordpress 还有一个包含以下列的 usersmeta 表
- meta_id
- user_id
- meta_key(例如名字)
- 元值(例如汤姆)
每个用户在 usersmeta 表中有 20 行,无论这些行是否有填充的 meta_value。也就是说,将始终存在的元行添加到 users 表不是更有效吗?
我猜测 users 表中的信息被更频繁地查询(例如 user_id、username、pass),因此保持这些行更小更有效。这是真的?这种表格分离还有其他原因吗?
【问题讨论】:
-
我猜他们想支持任意数量的元键?
-
@Mike 但是他们不能从用户表中添加/删除相同的键吗?例如。当他们创建一个新的元键时,在当前结构中,他们必须在 usersmeta 表中为每个用户插入一个新行。如果元键都在用户表中,那么他们只需在整个表中添加一个新列。我可能遗漏了一些东西,但两者都支持任意数量的元键,不是吗?
-
也许
meta_key可能有 500 个不同的可能值,但大多数用户只有少数几个。他们不希望用户表上有 500 列。此外,也许不同的插件可以将元数据存储在用户身上,而您不希望修改您的数据库模式。真的,我无法推测。也许更多是 Wordpress 专家的人会加入。 -
@Mike 500 列似乎没有问题的原因是,到目前为止,每个用户在元表中的行数相同,无论是否有相应的值。因此,对于 500 个元键,它们在元表中仍然有 500 行,或者在用户表中有 500 列(如果它们被组合的话)。但我什至没有考虑第二部分。将行添加到元表的插件比让它们更改数据库结构更有意义。我认为很可能就是这样。
标签: sql wordpress query-optimization