问题描述

在 WordPress 服务的每一页的开头,有一个 MySQL 调用来提取选项:

SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes';

因为 autoload 列没有索引,MySQL 必须查找所有行。

我也遇到了 this answer 的评论,即使有一个索引也不会有性能提升。

在我的应用程序中,我使用了很多临时值作为会话替换。他们工作得很好,我有自己的垃圾回收程序。我注意到在 wp_options 表中,我的瞬态值 (以_transient_开头) 都有 autoload=no 。我期望我的 wp_options 表的行数随着并发用户数的增加而增加。

我想知道为什么桌子是这样设计的。我应该为我的具体案例创建一个索引?

最佳解决方案

没有索引,因为它的需要是不够强大的。

建议使用 ticket #14258,但由于大多数选项默认使用 autoload=yes,所以索引将被忽略。

还有打开门票 #24044 _Add index to wp_options to aid/improve performance_

我想你应该创建一个索引。它将在升级中幸存下来。这可能无法帮助您的表现,但您可以向该故障单添加真正的统计数据。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。