我有个问题plugin of mine 它使用post meta存储帖子的所有权。基本上,我的问题是WP_Meta_Query
类为每个meta\\u查询生成一个联接。我不明白为什么我们不能同样加入all 查询。
当然,当使用5到6个以上的查询时,查询需要花费太多的时间才能完成,插件无法获得帖子。
E、 g:这就是我要做的,以获得属于用户5、6、8和10的帖子(在真正的插件中,比较总是像,值看起来像“%| usr\\u 5 |%”,以解决一些高级所有权控制的情况):
\'meta_query\' => array(
\'relation\' => \'OR\',
array(
\'key\' => \'owner\',
\'value\' => 5,
\'compare\' => \'=\'
),
array(
\'key\' => \'owner\',
\'value\' => 6,
\'compare\' => \'=\'
),
array(
\'key\' => \'owner\',
\'value\' => 8,
\'compare\' => \'=\'
),
array(
\'key\' => \'owner\',
\'value\' => 10,
\'compare\' => \'=\'
)
)
上面生成了一个SQL查询,该查询有4条JOIN语句(mt1到mt4),在WHERE子句中,使用每个JOIN进行比较。类似于:
mt1.meta_key = 5 OR mt2.meta_key = 6 OR mt3.meta_key = 8 OR mt4.meta_key = 10
这有什么意义??!所有这些都可以使用一个JOIN和WHERE子句来完成,如:
mt1.meta_key = 5 OR mt1.meta_key = 6 OR mt1.meta_key = 8 OR mt1.meta_key = 10
我有什么遗漏吗?多连接是为了处理一些比较类型吗?