我已经写了一个自定义相关的空缺查询我的网站,使用插件可湿性粉剂作业管理器。在使用查询监视器时,我总是发现查询非常慢(5+秒)。
我已经实现了查询缓存,只是这需要查询至少运行一次。
有没有可能进一步提高这样的查询速度?
$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 );发布于 2018-09-04 00:48:52
在您展示的示例中,您将搜索符合此条件的帖子:
_job_location = $region OR _job_location = $region AND job_category_wo LIKE $category[0]您可以将此表达式简化为:
_job_location = $region布尔代数说(A) OR (A AND B)是多余的。它和简单的(A)是一样的。
这将排除OR操作,这对于SQL来说很难优化。
附言:我认为你的例子中还有其他错误。您设置了一个变量$location,但后来您使用了$region。到底是哪一个?
此外,您没有对任何值进行清理以防止SQL注入。
https://stackoverflow.com/questions/52152173
复制相似问题