[wp-trac] [WordPress Trac] #16706: Queries using "category__and" are slow on large databases
WordPress Trac
wp-trac at lists.automattic.com
Tue Mar 1 05:13:25 UTC 2011
#16706: Queries using "category__and" are slow on large databases
-------------------------+-----------------------------
Reporter: tigertech | Owner: scribu
Type: enhancement | Status: reviewing
Priority: normal | Milestone: Future Release
Component: Performance | Version: 3.1
Severity: normal | Resolution:
Keywords: has-patch |
-------------------------+-----------------------------
Comment (by tigertech):
Replying to [comment:5 scribu]:
> Here's an experiment to try on a clean install:
>
> Make two categories A and B.
>
> Make Post 1 and assign it both category A and category B.
>
> Make Post 2 and assign it to just category A.
>
> Do the `category__and => (A, B)` query and compare.
>
> The query without GROUP BY will return Post 1 as well as Post 2, which
is incorrect.
I tried a clean install and tested this. My change does not return both
posts, though, and I'm not sure why you'd think it would. The results are
identical.
Did you try it? If so, I think you accidentally tried something different.
It won't include Post 2 because when the outer query calls the inner query
like this:
{{{
AND (
SELECT COUNT(1)
FROM wp_term_relationships
WHERE term_taxonomy_id IN (<A>,<B>)
AND object_id = <Post_2_ID>
) = 2
}}}
.... the "COUNT(1)" result won't equal 2. It will equal 1, because only
one row in wp_term_relationships will match both WHERE/AND clauses. This
subquery will therefore be false and the post won't be included.
I'm attaching a patch to make 100% sure we're talking about the same
change....
--
Ticket URL: <http://core.trac.wordpress.org/ticket/16706#comment:11>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software
More information about the wp-trac
mailing list