哪个更好更快? Wordpress查询或SQL查询

时间:2014-07-09 07:11:52

标签: mysql wordpress

假设我正在开发一个最小主题,帖子页面single.php仅显示帖子标题,摘录和内容。

所以一般来说就是

<?php the_title(); ?>
<?php the_excerpt(); ?>
<?php the_content(); ?>

所以我期待3次查询......

相反,如果我写一个自定义查询,我只是一次在数组中获取这3个数据...

<?php arr[] = get_row(select title, excerpt, content from wp_posts where post_id = 1); ?>
<?php echo arr[0] ?>
<?php echo arr[1] ?>
<?php echo arr[2] ?>

哪个更快还是有所作为?

如果错误,则pz忽略语法...

1 个答案:

答案 0 :(得分:2)

the_title函数使用路径是

the_title&gt; get_the_title&gt; get_post&gt; WP_Post

最后,WP_Post get_instance方法有以下几行

$_post = wp_cache_get( $post_id, 'posts' );

if ( ! $_post ) {
    $_post = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = %d LIMIT 1", $post_id ) );

    if ( ! $_post )
        return false;

    $_post = sanitize_post( $_post, 'raw' );
    wp_cache_add( $_post->ID, $_post, 'posts' );
} elseif ( empty( $_post->filter ) ) {
    $_post = sanitize_post( $_post, 'raw' );
}

所以,the_title使用get_row方法。它是SELECT * FROM $wpdb->posts WHERE ID = %d LIMIT 1而你的是select title, excerpt, content from wp_posts where post_id = 1。也许你可以在你的sql代码中添加LIMIT 1

wp_cache_get是这些事物的不同之处。如果效果良好,缓存将改变每一种情况。