带有关系‘OR’的META_QUERY终止服务器CPU

时间:2012-03-16 作者:Kaaviar

function get_nb_offres( $typeOffre ) {

    global $type_bien_correspondances;
    $args = array(
        \'post_type\' => \'annonces\',
        \'meta_query\' => array(
            \'relation\' => \'OR\'
        )
    );

    foreach( $type_bien_correspondances[$typeOffre] as $typeBien ) {
        $args[\'meta_query\'][] = array(
                \'key\' => \'type_de_bien\',
                \'value\' => $typeBien
        );
    }

    $annonces = new WP_Query( $args );
    return $annonces->post_count;
}
我的全局$type\\u bien\\u对应关系如下:

$type_bien_correspondances = array(
    \'Appartement\' => array(
        \'studios\',
        \'T1\',
        \'T2\',
        \'T3\',
        \'T4\',
        \'T5\'
    ),
    \'Immeuble\' => array(
        \'immeuble\'
    ),
    \'Programme neuf\' => array(
        \'programme neuf\'
    ),
    \'Maison, Villa\' => array(
        \'maison\',
        \'villa\',
        utf8_encode( \'propriété\' )
    ),
    \'Fond de commerce\' => array(
        \'fond de commerce\'
    ),
    \'Terrain\' => array(
        \'terrain\'
    )
);
最后,我对get\\u nb\\u offres()函数的调用如下:

// Within a function
return get_nb_offres( \'Appartement\' );
我的问题是,当运行这段代码时,我的服务器CPU发疯了,除了重新启动它,我什么都做不了。注释“relation”行可以使代码正常工作,但这并不是我所期望的。

我仍然可以通过运行几个WP\\u查询来解决这个问题,但我更愿意了解bug的来源。

编辑

这不是一个真正的答案,但有一些线索可以优化我的查询。

1 个回复
最合适的回答,由SO网友:kaiser 整理而成

哎呀,没有relation 的键meta_query. 使用compare 相反,也可以指定type 通过跳过超出范围的类型来加快速度。

EDIT

$args = array(
    \'post_type\' => \'product\',
    \'meta_query\' => array(
            // Used to set two meta keys IN RELATION TO EACH OTHER
        \'relation\' => \'OR\',
        array(
            \'key\' => \'color\',
            \'value\' => \'blue\',
                    // Used to FILTER OUT/IN/LIKE THE VALUE NAME
            \'compare\' => \'NOT LIKE\'
        ),
        array(
            \'key\' => \'price\',
            \'value\' => array( 20, 100 ),
            \'type\' => \'numeric\',
            \'compare\' => \'BETWEEN\'
        )
    )
  );
 $query = new WP_Query( $args );

结束

相关推荐