我在Wordpress 3.5.1的主题中为附件帖子类型设置了三个自定义分类法。一种分类法是非层次的(即标记),其中有大约800个术语。(我正在使用WP构建一个快速脏库照片网站,这些分类术语类似于照片关键字。是的,人们可能会争论WP是否是用于此的正确工具……)。另一种分类法也是扁平的,但其中没有术语。
简而言之,我的网站变得极其缓慢。一般来说,我对MySQL或数据库不太熟悉,但当我使用Blackbox插件来深入了解页面加载时的底层查询时,我发现有两个查询特别为我的页面增加了巨大的开销。页面请求时间需要几秒钟,而在创建分类法之前,这种情况是不会发生的。仅一个查询(如下)平均需要1.4秒。
发生了什么事,有没有办法阻止这一切?WP需要在每个页面上进行这些昂贵的分类查询,这有什么原因吗?
当前WP正在执行的一个查询如下所示:
SELECT t.*, tt.*, tr.object_id
FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id
INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy IN (\'myCustomTaxonomyName\') AND tr.object_id IN (
list of 200+ post IDs
)
ORDER BY t.name ASC;
另一个看起来很相似,只是分类名称不同:
SELECT t.*, tt.*, tr.object_id
FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id
INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy IN (\'attachment_tax1\', \'attachment_tax2\') AND tr.object_id IN (
list of 200+ post IDs
)
ORDER BY t.name ASC;