搜索不能与‘Relation’=>‘OR’一起使用

时间:2014-04-29 作者:Navneil

Records in the Database: 5.

The Problem: 这段代码搜索5条记录需要很长时间,之后挂断,没有成功的结果。如果我更改\'relation\' => \'OR\'\'relation\' => \'AND\' 这是可行的,但这不是我在这个场景中想要的。

Is everything okay in my code?

<?php
$args = array(
    \'post_type\' => \'shipping-schedules\', 
    \'posts_per_page\' => 5,
    \'post_status\' => \'publish\',
    \'paged\' => $paged,
    \'meta_query\' => array(
    \'relation\' => \'OR\',
        array(
            \'key\' => \'schedules_port\',
            \'value\' => $sfrom,
            \'compare\' => \'LIKE\'
        ),
        array(
            \'key\' => \'schedules_port\',
            \'value\' => $sto,
            \'compare\' => \'LIKE\'
        ),
        array(
            \'key\' => \'schedules_vessel\',
            \'value\' => $svessel,
            \'compare\' => \'LIKE\'
        ),
        array(
            \'key\' => \'schedules_voyage\',
            \'value\' => $svoyage,
            \'compare\' => \'LIKE\'
        ),
        array(
            \'key\' => \'schedules_arrival\',
            \'value\' => $sdate_arrival,
            \'compare\' => \'>=\',
            \'type\' => \'NUMERIC\'
        ),
        array(
            \'key\' => \'schedules_departure\',
            \'value\' => $sdate_departure,
            \'compare\' => \'<=\',
            \'type\' => \'NUMERIC\'
        )
    )
);                              
?>

1 个回复
SO网友:s_ha_dum

假设您正在通过这些参数,那么代码没有明显的错误WP_Query, 但是您尝试运行的查询不会非常有效。

在“或”关系中有6个元值,这本身效率不高,因为必须检查所有这些行是否匹配,并且所有元值都在LIKE, 这是一种正则表达式>=<= 需要读取所有行才能进行比较。

如果在表中只有5条记录的情况下失败,我会感到惊讶。可能吧,但我会感到惊讶,而且在任何情况下都不会有效率。我注意到你已经posts_per_page 至5。这与表中的记录数不同,这将反映$wpdb->post 记录,而不是必须扫描的$wpdb->postmeta\'记录数。

结束

相关推荐

Custom Post Type Search

我是wordpress新手,需要修改默认搜索功能。我需要查找什么文件或提供一些教程。。任何帮助都将不胜感激