WordPress.org

Make WordPress Core

Ticket #12891: scale.12891.6.diff

File scale.12891.6.diff, 862 bytes (added by scribu, 3 years ago)

Put NOT IN outside of subquery

  • wp-includes/taxonomy.php

     
    542542                                return ' AND 0 = 1'; 
    543543                } 
    544544 
    545                 if ( !in_array( $operator, array( 'IN', 'NOT IN' ) ) ) 
    546                         $operator = 'IN'; 
    547  
    548545                $taxonomies = "'" . implode( "', '", $taxonomies ) . "'"; 
    549546 
    550547                $terms = array_unique( (array) $terms ); 
     
    587584 
    588585                        $i++; 
    589586                } 
    590                 else { 
    591                         // NOT IN is very slow for some reason 
    592                         $where .= " AND $primary_table.$primary_id_column IN ( 
     587                elseif ( 'NOT IN' == $operator ) { 
     588                        $where .= " AND $primary_table.$primary_id_column NOT IN ( 
    593589                                SELECT object_id  
    594590                                FROM $wpdb->term_relationships  
    595                                 WHERE term_taxonomy_id $operator ($terms)  
    596                         )";              
     591                                WHERE term_taxonomy_id IN ($terms) 
     592                        )"; 
    597593                } 
    598594        } 
    599595