WordPress是一个以数据库为核心的CMS系统,如果WordPress网站变得很慢,一般都是数据库很臃肿了,接下来都是要进行优化,如果优化的好,基本网站速度会上升一大截。接下来搬主题就介绍有几种方法可以优化你的WordPress网站所使用的MySQL数据库。
原文链接:深度优化WordPress网站MySQL数据库表教程
本文目录 {#ftwp-header-title}
优化表 {#h-optimize-tables}
优化你的数据库中的所有表。
OPTIMIZE TABLE wp_posts, wp_comments, wp_options, wp_usermeta, wp_term_relationships, wp_term_taxonomy, wp_termmeta;Copy
用你的WordPress安装所使用的数据库前缀替换wp_。
修复表 {#h-repair-tables}
修复数据库中任何受损的表。
REPAIR TABLE wp_posts, wp_comments, wp_options, wp_usermeta, wp_term_relationships, wp_term_taxonomy, wp_termmeta;Copy
移除孤立项 {#link-remove-orphaned-items}
删除孤立的postmeta项。
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT id FROM wp_posts);Copy
删除孤立关系项。
DELETE tr FROM wp_term_relationships tr LEFT JOIN wp_posts wp ON wp.ID = tr.object_id WHERE wp.ID IS NULL;Copy
删除孤立的术语项目。
DELETE t FROM wp_terms t LEFT JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id WHERE tt.term_id IS NULL;
添加索引 {#h-add-indexes}
向数据库表添加索引可以提高查询的性能,特别是对于使用WHERE或JOIN子句的查询。你可以使用ALTER TABLE MySQL命令向你的表添加索引。
例如,要在wp_posts表的post_title列上添加一个索引,你可以使用以下SQL代码。
ALTER TABLE wp_posts ADD UNIQUE INDEX (post_title);Copy
这将确保在wp_posts表中没有两行在post_title列中有相同的值。
你也可以使用INDEX关键字指定索引的名称,像这样。
ALTER TABLE wp_posts ADD INDEX post_title_index (post_title);
这将在wp_posts表中的post_title列上创建一个名为post_title_index的索引。
请记住,在你的数据库表中添加索引可以提高你的查询性能,但它也可能增加你的数据库的大小,并减慢某些类型的数据修改查询。你应该仔细考虑你想要索引哪些列,以及索引的好处是否超过了潜在的坏处。
添加缓存 {#h-add-caching}
要给WordPress数据库表添加缓存,你可以使用带有CACHE选项的ALTER TABLE MySQL命令。例如,要向wp_posts表添加缓存,你可以使用以下SQL代码:
ALTER TABLE wp_posts CACHE;Copy
这将导致MySQL对wp_posts表的内容进行60分钟的缓存。在这段时间过后,该表将被取消缓存,其内容将在下次访问该表时从磁盘重新加载。
EXPLAIN查询 {#h-explain-queries}
EXPLAIN关键字可以用来分析SELECT查询的性能,看看它是如何使用索引和其他优化技术的。你可以用它来帮助识别和修复查询的性能问题。
下面是一个例子,说明如何使用EXPLAIN关键字来分析WordPress中的SELECT查询。
EXPLAIN SELECT * FROM wp_posts WHERE post_type = 'page';
这将返回一个表格,其中包含关于该查询如何使用索引和其他优化技术的信息。例如,类型列将表明查询是使用全表扫描还是使用索引,而关键列将显示正在使用的索引。
下面是一个你可能看到的输出的例子。
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+
| 1 | SIMPLE | wp_posts | ref | post_type | post_type | 767 | const | 10 | Using index |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+
在这个例子中,查询是使用一个索引(post_type)来搜索wp_posts表中post_type列为 "page "的记录。这比全表扫描更有效,因为它只需要在表的一部分进行搜索。
请记住,这些只是你可以用来优化你的WordPress数据库的几个SQL代码的例子。还有许多其他的优化技术可以使用,而你应该使用的具体优化方法将取决于你的具体网站和数据库设置。
如果觉得麻烦,可以直接用一些WordPress数据库优化插件,如下: