目前的情况是一家拥有3000多种产品的WooCommerce商店。该店仅限会员(5000+),会员可以使用有限的产品。查询特定于用户的产品ID是一个巨大的性能瓶颈。
Attempt 1 (查询需要22秒)
在元值中搜索附加到产品的成员列表:
\'meta_query\' => array(
array(
\'key\' => \'product-members\',
\'value\' => \':"\' . $member_id . \'";\',
\'compare\' => \'LIKE\',
),
),
Attempt 2 (查询需要17秒)
缓存允许用户查看的产品ID列表,然后使用以下各项执行所有产品查询:
\'post__in\' => $post_ids,
如果没有成员特定性,查询需要150ms……我还可以用什么其他方法来避免这种性能影响?如何以不同的方式保存产品/成员关系,以便于查询?