我使用插件 WP Job Manager 为我的网站编写了一个自定义的相关职位空缺查询。使用查询监视器时,我不断发现查询非常慢(5 秒以上)。
我已经实现了查询缓存,但这需要查询至少运行 1 次。
是否可以进一步加快这样的查询速度?
$location = get_post_meta($id, '_job_location', true);
$category = get_post_meta($id, 'job_category_wo', true);
$args = array(
'post_type' => 'job_listing',
'numberposts' => 5,
'meta_query' => array(
'relation' => 'OR',
array(
'key' => '_job_location',
'value' => $location,
'compare' => '='
),
array(
'relation' => 'AND',
array(
'key' => '_job_location',
'value' => $location,
'compare' => '='
),
array(
'key' => 'job_category_wo',
'value' => $category[0],
'compare' => 'LIKE'
)
)
)
);
$postslist = get_posts( $args );
最佳答案
在您显示的示例中,您搜索与此条件匹配的帖子:
_job_location = $region OR _job_location = $region AND job_category_wo LIKE $category[0]
您可以将此表达式简化为:
_job_location = $region
bool 代数表示(A) OR (A AND B)
是多余的。它与简单的 (A)
相同。
这会排除 OR
运算,这对 SQL 来说很难优化。
P.S.:我认为你的例子中还有其他错误。您设置了变量 $location
,但稍后使用 $region
。是哪一个?
此外,您没有清理任何值来防止 SQL 注入(inject)。
关于mysql - 加快 WordPress 缓慢查询速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52152173/