使用元比较日期加速WP_QUERY

时间:2017-07-10 作者:2046

有人知道如何加快查询速度吗

    $events_arr = array(
            \'post_type\' => \'event\',
            \'post_status\' => \'publish\',
            \'posts_per_page\' => 100,
            \'orderby\' => array( \'event_start\' => \'ASC\'),
            \'meta_query\' => array(
                \'relation\' => \'OR\',
                array(
                    \'key\'     => \'event_start\',
                    \'compare\' => \'=\',
                    \'value\'   => $queried_date,
                ),
               array(
                   \'relation\' => \'AND\',
                   array(
                           \'key\' => \'event_end\',
                           \'compare\' => \'>=\',
                           \'value\' => $queried_date,
                   ),
                   array(
                           \'key\' => \'event_start\',
                           \'compare\' => \'<\',
                           \'value\' => $queried_date,
                   ),
                ),
            ),
);
字面意思:return events that starts today, or those that already begin but did not end yet.

In reality this query walks thru all events 并过滤掉其中一些。问题是,这是一个极其缓慢的过程,将来还会变得更糟。

理想的结果是,如果查询只直接获取给定数量的事件。因为现在,无论我想要多少或很少的事件,它总是得到所有并在之后处理它们,或者看起来像这样。在我的情况下,每次都会得到所有实际的1700个事件。。(如果我们不将缓存带入帐户)

谢谢你的帮助

1 个回复
SO网友:Melissa Freeman

你能升级你的主机吗?我在AWS上运行了一个非常类似的查询,它可以处理1700个事件,meta\\u查询也有位置。

您的另一个选择(如果总是同一个查询,即今天是您查询的日期)是使用瞬态来存储结果。

$events_arr = get_transient(\'events_running_today\');

if (!$events_arr) {
    $expiration = 2 * 60 * 60; // time in seconds
    // run your existing query here
    $events_arr = // your query    
    set_transient( \'events_running_today\', $events_arr, $expiration );
}
// etc etc

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post