存储多个元字段与存储一个JSON编码字段的性能

时间:2016-06-16 作者:user1889580

我有几种自定义的帖子类型。对于一些人,我需要基于单个元字段查询它们,但对于其他人,我有十几个单独的元字段。如果我创建一个数组并将其转换为JSON,如果我逐个调用12个元字段,或者调用JSON,解析它,然后得到变量,会更快吗?

我在想的一个更快的替代方法是逐个保存所有的元字段,但也要创建所有元字段的JSON版本。如果我需要通过meta进行查询,我可以这样做,并且在显示列表时,我不需要执行12个查询*num个帖子。

1 个回复
SO网友:TheDeadMedic

如果我创建一个数组并将其转换为JSON,如果我逐个调用12个元字段,或者调用JSON,解析它,然后得到变量,会更快吗?

几乎没有区别。元API意味着每个post最多一次将所有元键/字段/值从数据库拉入内存。因此:

$keys = [ \'this\', \'that\', \'then\' ];
$data = [];
foreach ( $keys as $key )
    $data[ $key ] = get_post_meta( $post->ID, $key, true );
。。。效率与:

$json = get_post_meta( $post->ID, \'json\', true );
$data = json_decode( $json );
。。。嗯,略微优化(减少get_post_meta 开销-我指的是PHP处理、WordPress过滤器等,而不是数据库查询):

$meta = get_post_meta( $post->ID ); // No key, all metadata returned
$data = [];
foreach ( $keys as $key ) {
    $data[ $key ] = isset( $meta[ $key ] ) ? maybe_unserialize( $meta[ $key ][0] ) : null;
}

相关推荐

Performance on WPMS

我的WPMS站点托管在8核/32mb RAM服务器上,但响应时间非常长。我们有大约1000个博客(单个db上有35000多个表)和70000个页面浏览量。我认为我可以缩短响应时间,将具有更多页面浏览量的博客移动到单独的DB中,并使用hyper DB插件将所有博客拆分为每个DB 100个博客。你觉得怎么样?