wordpress和mysql:触发器问题

x33g5p2x  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(345)

对不起,如果我是错误的地方张贴,我是新的和法国(对不起我修改谷歌翻译),通常我仍然管理,但在那里我打破了我的牙齿在这个问题上。
我正在使用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)
 )

我告诉自己更新会更糟。有人能指引我吗?我事先谢谢你。

ekqde3dh

ekqde3dh1#

我不知道,但在另一个网站上,他们给了我这个触发器:

CREATE TRIGGER `ajouter`
BEFORE insert ON `tabone`
FOR EACH ROW
BEGIN
  DECLARE _name         VARCHAR(255)  DEFAULT NULL;
  DECLARE _postcode  INTEGER       DEFAULT NULL;

  SET _name        = (select name        from `tabtwo` where user_id = new.user_id);
  SET _postcode = (select postcode from `tabtwo` where user_id = new.user_id);

  IF new.meta_key = 'name'        then replace into `tabtwo` (`user_id`,`name`,`postcode`) values (new.user_id, new.meta_value,_postcode); END IF;
  IF new.meta_key = 'postcode' then replace into `tabtwo` (`user_id`,`name`,`postcode`) values (new.user_id,_name,new.meta_value);         END IF;

而且很有效。
在索引优化的新表上的查询如何比在非结构化wordpress eav模型的表上的查询慢?

相关问题