Some optimizations in queries and code.

git-svn-id: http://svn.automattic.com/wordpress/trunk@2976 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
matt 2005-10-29 23:23:17 +00:00
parent e0e5a1659c
commit 2718217d3b
3 changed files with 38 additions and 13 deletions

View File

@ -1275,24 +1275,29 @@ function update_post_caches(&$posts) {
// Get the categories for all the posts
for ($i = 0; $i < count($posts); $i++) {
$post_id_list[] = $posts[$i]->ID;
$post_id_array[] = $posts[$i]->ID;
$post_cache[$posts[$i]->ID] = &$posts[$i];
}
$post_id_list = implode(',', $post_id_list);
$post_id_list = implode(',', $post_id_array);
update_post_category_cache($post_id_list);
// Do the same for comment numbers
$comment_counts = $wpdb->get_results("SELECT ID, COUNT( comment_ID ) AS ccount
FROM $wpdb->posts
LEFT JOIN $wpdb->comments ON ( comment_post_ID = ID AND comment_approved = '1')
WHERE ID IN ($post_id_list)
GROUP BY ID");
$comment_counts = $wpdb->get_results("SELECT comment_post_ID, COUNT( comment_ID ) AS ccount
FROM $wpdb->comments
WHERE comment_post_ID IN ($post_id_list)
AND comment_approved = '1'
GROUP BY comment_post_ID");
if ( $comment_counts ) {
foreach ($comment_counts as $comment_count)
$comment_count_cache["$comment_count->ID"] = $comment_count->ccount;
foreach ($comment_counts as $comment_count) {
$comment_count_cache["$comment_count->comment_post_ID"] = $comment_count->ccount;
$got_count[] = $comment_count->comment_post_ID;
}
foreach ( $post_id_array as $id )
if ( !in_array( $id, $got_count ) )
$comment_count_cache["$id"] = 0;
}
// Get post-meta info

View File

@ -92,14 +92,34 @@ if ( !function_exists('get_userdatabylogin') ) :
function get_userdatabylogin($user_login) {
global $cache_userdata, $wpdb;
$user_login = sanitize_user( $user_login );
if ( empty( $user_login ) )
return false;
if ( isset( $cache_userdata[$user_login] ) )
return $cache_userdata[$user_login];
$user_id = $wpdb->get_var("SELECT ID FROM $wpdb->users WHERE user_login = '$user_login'");
return get_userdata( $user_id );
if ( !$user = $wpdb->get_row("SELECT * FROM $wpdb->users WHERE user_login = '$user_login'") )
return $cache_userdata[$user_login] = false;
$metavalues = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->usermeta WHERE user_id = '$user->ID'");
foreach ( $metavalues as $meta ) {
@ $value = unserialize($meta->meta_value);
if ($value === FALSE)
$value = $meta->meta_value;
$user->{$meta->meta_key} = $value;
// We need to set user_level from meta, not row
if ( $wpdb->prefix . 'user_level' == $meta->meta_key )
$user->user_level = $meta->meta_value;
}
$cache_userdata[$user->ID] = $user;
$cache_userdata[$cache_userdata[$user->ID]->user_login] =& $cache_userdata[$user->ID];
return $cache_userdata[$user->ID];
}
endif;

View File

@ -24,7 +24,7 @@ function get_category_link($category_id) {
$catlink = $wp_rewrite->get_category_permastruct();
if ( empty($catlink) ) {
$file = get_settings('home') . '/' . get_settings('blogfilename');
$file = get_settings('home') . '/';
$catlink = $file . '?cat=' . $category_id;
} else {
$category = &get_category($category_id);