问题描述
在 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。