对不起,如果我是错误的地方张贴,我是新的和法国(对不起我修改谷歌翻译),通常我仍然管理,但在那里我打破了我的牙齿在这个问题上。
我正在使用wordpress,mysql和一个名为wp member的成员管理插件。我修改了插件,使得用户可以输入他的邮政编码。
问题是,使用wordpress时,有关用户的所有信息都存储在usermeta表中。
表的结构如下: umeta_id
(pk):不是用户的id,而是注册的id,也可以是用户的姓名、邮政编码等 umeta_id
可以与用户的id相关联。 user_id
(fk):是用户的id,它在另一个表中是pk,但是另一个表不能存储我想要的数据,因为在wordpress下该表是不可修改的。
meta_key:是数据的标题,例如名称、邮政编码。因此,我们可以为不同的用户找到几次相同的meta\u密钥。
meta_值:回答meta_键,它在那里找到保存的数据。
简化用户示例:
umeta_id | user_id | meta_key | meta_value
-----------------------------------------------------------------
1 | 1 | name | Toto
2 | 1 | postcode | 66000
... | 1 | ... | ...
15 | 1 | city | Perpignan
这种结构的问题是,我认为用户越多,检索邮政编码的请求就越长。
因为对于一个用户可以有15个不同的录音。如果有10000个用户,将有150000行去检索我们想要的邮政编码。我想听听你的意见,因为我认为这张table的结构有问题。
因此,我想创建一个新的用户表,其结构如下(我不需要城市),以方便查询和它们的响应时间。
user_id | name | postcode
-----------------------------------
1 | toto | 66000
对于表的创建不必担心,关于通过表的触发器来实现它 usermeta
我只能得到 user_id
这个名字要感谢上帝的召唤 new.user_id
但是我找不到邮政编码。触发器如下:
insert into users (user_id, name, codepostal) values (
(select distinct user_id from usermeta where user_id = new.user_id),
(select meta_value from te_usermeta where meta_key = 'name' and user_id = new.user_id),
(select meta_value from te_usermeta where meta_key = 'codepostal' and user_id = new.user_id)
)
我告诉自己更新会更糟。有人能指引我吗?我事先谢谢你。
1条答案
按热度按时间ekqde3dh1#
我不知道,但在另一个网站上,他们给了我这个触发器:
而且很有效。
在索引优化的新表上的查询如何比在非结构化wordpress eav模型的表上的查询慢?