【发布时间】:2012-04-25 03:09:43
【问题描述】:
我正在使用 postmeta 表为 wordpress 编写一些自定义代码。物品存放在这里,常用的pk1就是post_id。
但是我正在做的事情会有一堆 postmeta 的可点击部分,例如
- source_site
- source_author
- source_rating
或类似的东西。现在该表将保存具有相同 source_site 或 source_author 的不同帖子的多个帖子数据。
然后,用户可以单击 source_author,他们将被带到一个新表,其中包含链接回此 source_author 的所有帖子或文章。
问题是我链接到一个 postmeta 值,而不是通过 post-id 的 pk1。
这意味着要获取其余数据,我要么必须进行额外的查询,要么将其连接到同一个表中。
这让我想到了我的问题。做联接还是子查询会更好。
更进一步的问题是 postmeta 表存储所有各种数据和键和值,因此很难查询我想要的其他部分。
所以表格看起来像
|meta_id|post_id|meta_key|meta_value|
|1 | 2 |source_author | Dan Holmes |
|2 | 2 |source_site |http://somesite.com|
只是寻找最干净的方法来获取这些数据,否则我只能先为作者获取数据:
$the_post_ids = select post_id from postmeta where meta_key='source_author' and meta_value='Dan Holmes'
foreach($the_post_ids as $post_id) {
select * from postmeta where post_id=$post_id;
}
现在这都是非常伪代码,我想问题是一旦数据开始变得相当大,我担心这会导致每个可以点击的部分产生大量开销,并且事实上,我必须在一个数组中进行多项选择。
有没有更好的方法来处理这个问题?
【问题讨论】:
-
加入是推荐的方式;在 PHP 中执行子查询对性能很不利。