我们说我有这张桌子:
img_id, img_author, img_path
1 | BillyDoe | img1.jpg
2 | BillyDoe | img2.jpg
3 | BillyDoe | img3.jpg
我运行另一个匹配某些特定标准的查询 并且该查询返回一个数组,许多img_author名称如下: BillyDoe,JillDoe,John Doe等...
我要做的第二件事就是获取所有图像 来自与作者姓名匹配的图像表
与所有作者一起创建循环会更好吗? 命名返回的上一个查询并多次运行查询
select img_path from images_table where img_author = $curr_author_name
或者 我应该创建一个自定义函数,将加入所有作者姓名和 使用多个'或'运行单个sql查询像这样的运营商:
select img_path from images_table where img_author = BillyDoe or img_author = JillDoe or img_author = JohnDoe ... x100 times
我是否会有任何一种性能损失/收益 两种方式?或者有更好的选择,如多查询等。 总是说性能明智,哪种方法资源较少 激烈?
谢谢。
答案 0 :(得分:2)
我会使用连接执行单个查询,这样您就可以查询正在查找的img_author名称,然后加入此表以获取img_path信息。
您还没有显示您提及的第一个查询以确定作者姓名,因此我无法给您一个具体的示例。 BUt该查询可能如下所示:
SELECT
it.img_path AS img_path
FROM
whatever_table_is_in_your_first_query AS x
INNER JOIN
img_table AS it
ON x.author = it.img_author
WHERE
... /* whatever criteria you use to get author names */
在嵌套循环中进行查询绝对应该被视为一种反模式,除非你有一个非常具体的理由这样做并理解性能权衡。