我不确定其中一个能被直截了当地称为比另一个快。而且,在任何情况下,只有当你开始缩放到很多很多对象时,它才会真正出现。
问题是:Posteta表是一个没有索引的键值表。如果表中有一定数量的行,比如说几十万行,这可能会导致速度问题,因为每当执行以下查询时,MySQL都必须执行完整的表扫描...FROM $wpdb->posts WHERE meta_value = \'foo\' and meta_value = \'bar\'...
另一方面,分类查询需要一个或两个子查询。但是所讨论的表被积极地索引(查询可以很好地缓存),因此这些查询在规模上的性能显著提高(同样,“规模”意味着许多、数千篇帖子)。
就“复杂性”而言,它实际上只是register_taxonomy()
. 这个tax_query
参数WP_Query
不比meta_query
, 以及wp_x_post_terms()
只是比x_post_meta()
. 我也不会担心“破坏分类学的目的”。这些工具是供您使用的,但它最适合您的项目:)并且可能有一天,由于某种原因,您实际上希望每个项目有多个术语,在这种情况下,选择分类法将是一种前瞻性的选择。