正文

WordPress终极优化指南–将MySQL索引添加到WordPress wp_options表

WordPress终极优化指南–将MySQL索引添加到WordPress wp_options表

教程总目录:WordPress终极优化指南

随着使用时间的增长,WP数据库中的wp_options表会变得越来越臃肿。很多插件会在wp_options表生成临时数据。

表的膨胀会影响数据库的性能,然后影响到网站的速度。优化网站过程中优化wp_options表非常重要。

有很多种方法提高性能,但是比较简单的是给wp_options表添加索引。可以拥有更快的查询速度。

首先我们需要确认是否已经创建了索引,登陆phpmyadmin然后执行一个SQL命令来查询。

SHOW INDEX FROM wp_options;

如果执行后显示的是下图的结果,则是没有创建索引。

WordPress终极优化指南–将MySQL索引添加到WordPress wp_options表WordPress终极优化指南–将MySQL索引添加到WordPress wp_options表

WordPress终极优化指南–将MySQL索引添加到WordPress wp_options表WordPress终极优化指南–将MySQL索引添加到WordPress wp_options表

如果现实的是下图中,Column_name值为autoload 或类似的索引,则表示已经创建。

WordPress终极优化指南–将MySQL索引添加到WordPress wp_options表WordPress终极优化指南–将MySQL索引添加到WordPress wp_options表

 

wp_options表索引添加教程(WP-CLI版本命令普通用户不必理会)

首先找出wp_options表通过比较autoload = yes行数和autoload = no行数来向表中添加索引。

autoload = yes行数查询

SELECT COUNT(CASE WHEN autoload = 'yes’ THEN 1 END) FROM wp_options;

WP-CLI版本

wp db query “SELECT COUNT(CASE WHEN autoload = 'yes’ THEN 1 END) FROM $(wp db prefix –allow-root)options;" –allow-root

WordPress终极优化指南–将MySQL索引添加到WordPress wp_options表WordPress终极优化指南–将MySQL索引添加到WordPress wp_options表

autoload = no行数查询

SELECT COUNT(CASE WHEN autoload = 'no’ THEN 1 END) FROM wp_options;

WP-CLI版本

wp db query “SELECT COUNT(CASE WHEN autoload = 'no’ THEN 1 END) FROM $(wp db prefix –allow-root)options;" –allow-root

WordPress终极优化指南–将MySQL索引添加到WordPress wp_options表WordPress终极优化指南–将MySQL索引添加到WordPress wp_options表

一般是autoload=no数量大于autoload=yes才会去创建索引。

通常如果60-80%的option_name键是autoload = no值,这时候就应该创建索引了。

索引创建

MySQL 语法采用这种格式  CREATE INDEX

CREATE INDEX <index-name> ON <table-name>(<column-1>, <column-2>);

wp_options输入下方命令在表上创建WordPress MySQL索引

CREATE INDEX autoloadindex ON wp_options(autoload, option_name);

创建成功后一般会返回:

MySQL 返回的查询结果为空 (即零行)。 (查询花费 0.0248 秒。)
CREATE INDEX autoloadindex ON wp_options(autoload, option_name)

创建后再使用SHOW INDEX FROM wp_options; 查询一次即可看到是否创建成功。

WordPress终极优化指南–将MySQL索引添加到WordPress wp_options表WordPress终极优化指南–将MySQL索引添加到WordPress wp_options表

WP-CLI版本

wp db query “CREATE INDEX autoloadindex ON $(wp db prefix –allow-root –skip-plugins –skip-themes)options(autoload, option_name);" –allow-root

如何删除索引?

使用下方命令将从wp_options表中删除MySQL索引

DROP INDEX autoloadindex ON wp_options

WP-CLI版本

wp db query “DROP INDEX autoloadindex ON $(wp db prefix –allow-root)options" –allow-root