Changeset 6253

Show
Ignore:
Timestamp:
10/15/07 20:14:56 (1 year ago)
Author:
ryan
Message:

Use inner joins instead of left joins for taxonomy. Inner is faster. fixes #5179 for 2.3

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/2.3/wp-includes/bookmark.php

    r6026 r6253  
    114114    if (!empty($category_query)) { 
    115115        $category_query .= ") AND taxonomy = 'link_category'"; 
    116         $join = " LEFT JOIN $wpdb->term_relationships AS tr ON ($wpdb->links.link_id = tr.object_id) LEFT JOIN $wpdb->term_taxonomy as tt ON tt.term_taxonomy_id = tr.term_taxonomy_id"; 
     116        $join = " INNER JOIN $wpdb->term_relationships AS tr ON ($wpdb->links.link_id = tr.object_id) INNER JOIN $wpdb->term_taxonomy as tt ON tt.term_taxonomy_id = tr.term_taxonomy_id"; 
    117117    } 
    118118 
  • branches/2.3/wp-includes/query.php

    r6190 r6253  
    933933 
    934934        if ( !empty($q['category__in']) ) { 
    935             $join = " LEFT JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) "; 
     935            $join = " INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) "; 
    936936            $whichcat .= " AND $wpdb->term_taxonomy.taxonomy = 'category' "; 
    937937            $include_cats = "'" . implode("', '", $q['category__in']) . "'"; 
     
    974974            $q['cat'] = $reqcat; 
    975975 
    976             $join = " LEFT JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) "; 
     976            $join = " INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) "; 
    977977            $whichcat = " AND $wpdb->term_taxonomy.taxonomy = 'category' "; 
    978978            $in_cats = array($q['cat']); 
     
    10161016 
    10171017        if ( !empty($q['tag__in']) ) { 
    1018             $join = " LEFT JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) "; 
     1018            $join = " INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) "; 
    10191019            $whichcat .= " AND $wpdb->term_taxonomy.taxonomy = 'post_tag' "; 
    10201020            $include_tags = "'" . implode("', '", $q['tag__in']) . "'"; 
     
    10261026 
    10271027        if ( !empty($q['tag_slug__in']) ) { 
    1028             $join = " LEFT JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) LEFT JOIN $wpdb->terms ON ($wpdb->term_taxonomy.term_id = $wpdb->terms.term_id) "; 
     1028            $join = " INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) INNER JOIN $wpdb->terms ON ($wpdb->term_taxonomy.term_id = $wpdb->terms.term_id) "; 
    10291029            $whichcat .= " AND $wpdb->term_taxonomy.taxonomy = 'post_tag' "; 
    10301030            $include_tags = "'" . implode("', '", $q['tag_slug__in']) . "'"; 
     
    10571057 
    10581058            $q[$item] = array_unique($q[$item]); 
    1059             $tsql = "SELECT p.ID FROM $wpdb->posts p LEFT JOIN $wpdb->term_relationships tr ON (p.ID = tr.object_id) LEFT JOIN $wpdb->term_taxonomy tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id) LEFT JOIN $wpdb->terms t ON (tt.term_id = t.term_id)"; 
     1059            $tsql = "SELECT p.ID FROM $wpdb->posts p INNER JOIN $wpdb->term_relationships tr ON (p.ID = tr.object_id) INNER JOIN $wpdb->term_taxonomy tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id) INNER JOIN $wpdb->terms t ON (tt.term_id = t.term_id)"; 
    10601060            $tsql .= " WHERE tt.taxonomy = '$taxonomy' AND t.$taxonomy_field IN ('" . implode("', '", $q[$item]) . "')"; 
    10611061            $tsql .= " GROUP BY p.ID HAVING count(p.ID) = " . count($q[$item]); 
  • branches/2.3/wp-includes/taxonomy.php

    r6159 r6253  
    13581358 
    13591359    // Get the object and term ids and stick them in a lookup table 
    1360     $results = $wpdb->get_results("SELECT object_id, term_taxonomy_id FROM $wpdb->term_relationships LEFT JOIN $wpdb->posts ON object_id = ID WHERE term_taxonomy_id IN (".join(',', array_keys($term_ids)).") AND post_type = 'post' AND post_status = 'publish'"); 
     1360    $results = $wpdb->get_results("SELECT object_id, term_taxonomy_id FROM $wpdb->term_relationships INNER JOIN $wpdb->posts ON object_id = ID WHERE term_taxonomy_id IN (".join(',', array_keys($term_ids)).") AND post_type = 'post' AND post_status = 'publish'"); 
    13611361    foreach ( $results as $row ) { 
    13621362        $id = $term_ids[$row->term_taxonomy_id];