問題描述
在 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。