我正在设计一个插件来创建数据库索引。建议?

时间:2021-04-28 作者:O. Jones

我正在启动一个(完全开源)的小项目,创建一个WordPress插件,该插件将向WP的MySQL表添加适当的索引,以提高性能。(一些wp表,尤其是wp\\u Posteta和wp\\u usermeta,可以使用更好的索引。)

我的目标是:让更大的网站(拥有更多的帖子、用户等)表现更好。

WordPress中性能最差的数据库表是什么?那么,是什么让它表现糟糕呢?

请用任何反馈回答此问题。

如果你知道一些其他项目,使我没有必要,请让我也知道这一点。

(我有足够的开发、测试和数据库技能来了解这个项目的内容。)

1 个回复
最合适的回答,由SO网友:O. Jones 整理而成

此插件,Index WP MySQL for Speed, 已发布。GPLedsource code 在这里。

轶事经验表明,一些大型WP和WooCommerce网站的速度有所加快。

下面是它运行的数据定义语言,用于创建有用的compound indexes.

ALTER TABLE wp_postmeta ADD UNIQUE KEY meta_id (meta_id);
ALTER TABLE wp_postmeta DROP PRIMARY KEY;
ALTER TABLE wp_postmeta ADD PRIMARY KEY (post_id, meta_key, meta_id);
ALTER TABLE wp_postmeta DROP KEY post_id;
ALTER TABLE wp_postmeta DROP KEY meta_key;
ALTER TABLE wp_postmeta ADD KEY meta_key (meta_key, post_id);
 
ALTER TABLE wp_usermeta ADD UNIQUE KEY umeta_id (umeta_id);
ALTER TABLE wp_usermeta DROP PRIMARY KEY;
ALTER TABLE wp_usermeta ADD PRIMARY KEY (user_id, meta_key, umeta_id);
ALTER TABLE wp_usermeta DROP KEY user_id;
ALTER TABLE wp_usermeta DROP KEY meta_key;
ALTER TABLE wp_usermeta ADD KEY meta_key (meta_key, user_id);
 
ALTER TABLE wp_termmeta ADD UNIQUE KEY meta_id (meta_id);
ALTER TABLE wp_termmeta DROP PRIMARY KEY;
ALTER TABLE wp_termmeta ADD PRIMARY KEY (term_id, meta_key, meta_id);
ALTER TABLE wp_termmeta DROP KEY term_id;
ALTER TABLE wp_termmeta DROP KEY meta_key;
ALTER TABLE wp_termmeta ADD KEY meta_key (meta_key, term_id);
 
ALTER TABLE wp_options ADD UNIQUE KEY option_id (option_id);
ALTER TABLE wp_options DROP PRIMARY KEY;
ALTER TABLE wp_options ADD PRIMARY KEY (autoload, option_id);
ALTER TABLE wp_options DROP KEY autoload;
 
ALTER TABLE wp_posts DROP KEY type_status_date;
ALTER TABLE wp_posts ADD KEY type_status_date
                     (post_type, post_status, post_date, post_author, ID);
ALTER TABLE wp_posts DROP KEY post_author;
ALTER TABLE wp_posts ADD KEY post_author
                     (post_author, post_type, post_status, post_date, ID);
 
ALTER TABLE wp_comments ADD KEY comment_post_parent_approved
                     (comment_post_ID, comment_parent, comment_approved, comment_ID);

相关推荐

Wordpress Database Cleanup

重建WordPress数据库和更改网站的目录结构有多困难?我继承了两个网站的维护工作,我很确定目录结构设置不正确,数据库一团糟(两个网站有6个数据库?)。我是WordPress的新手,我怀疑现在使用现有网站重建网站会更容易。丢失数据没什么大不了的,网站也没什么特别的。该网站运行正常,但维护起来越来越困难。这是一个合理的计划吗?