我正在测试一个非常大的数据库(也许wp_posts
包含数十万行)。因此,查询时间,尤其是搜索查询,非常长。我在想,是否有其他方法可以将WP数据库拆分为具有不同表前缀的多个表,以便url结构与原始数据库相比不会发生变化。
我试着换衣服$table_prefix
在里面wp_config
到wpa_
, 然后我创建了一个帖子示例,帖子名以a
. 然后我改变了$table_prefix
在里面wp_config
到wpb_
, 然后我创建了一个帖子示例,帖子名以b
.
在下一步中,我将替换$table_prefix
符合
// if query for post start with a, it will go to wpa_ tables,
// if query for post start with b, it will go to wpb_ tables
$prefix = get_the_title();
if ($prefix(0) !== \'a\') {
$table_prefix = \'wpb_\';
} else {
$table_prefix = \'wpa_\';
}
当我尝试打开我的域时,我遇到了错误
Fatal error: Call to undefined function get_the_title() in /home/todaytra/public_html/1/wp-config.php on line 62
我真的需要执行这个任务,通常的WPMU安装会生成子域或子文件夹,它会更改所有帖子的永久链接结构。我试着搜索了很多,但找不到关于这个的任何信息。
最合适的回答,由SO网友:tollmanz 整理而成
帕姆,
听起来您面临着一些重大挑战,但我强烈建议您不要弄乱表前缀。这样做会导致一系列问题,这将需要一次又一次的黑客来补救,从而使您的WordPress安装变得一团糟。
您还可以做一些其他事情来帮助解决查询速度慢的问题。虽然这些事情不一定都是直截了当的,但它们比尝试破解表前缀更值得您花费时间。
1) 确保您使用WP 3.4+。3.4中的标准查询有一些很好的改进,可以提高查询速度。
2) 对于特别有问题的查询,请考虑设置no_found_rows
到true
, update_post_term_cache
到false
, 和update_post_meta_cache
到false
. 这些都可以提高查询性能,但您肯定需要投入一些时间来理解其影响。阅读法典:http://codex.wordpress.org/Class_Reference/WP_Query
3) 使用持久对象缓存来提供查询缓存。这肯定是一个更复杂的过程,但通过将昂贵的查询缓存到RAM或磁盘,可以避免重复的慢速查询。
4) 安装页面缓存(WP Super Cache 这将有助于减少调用昂贵查询的次数。这并不能直接解决查询问题;但是,它减少了查询的调用次数。
除了第一个建议之外,我认为这些都不是“容易的”;然而,在我看来,你建议做的是一种巨大的浪费,你最好把时间花在研究解决WordPress中缓慢查询的替代方案上。您将了解更多关于WordPress、可伸缩性问题以及以标准WordPress方式做事的更好方法。