假设我有这张表:
img_id, img_author, img_path
1 | BillyDoe | img1.jpg
2 | BillyDoe | img2.jpg
3 | BillyDoe | img3.jpg
我运行另一个与某些特定条件匹配的查询该查询返回一个数组,img_author许多名称,例如:比利多伊,吉尔多伊,约翰多伊等...
我要做的第二件事是获取所有图像从与作者姓名匹配的图像表中
与所有作者创建一个循环会更好吗命名返回的上一个查询,并像这样多次运行查询
select img_path from images_table where img_author = $curr_author_name
或我应该创建一个自定义函数,该函数将连接所有作者姓名和使用多个"OR"运算符运行单个 SQL 查询,如下所示:
select img_path from images_table where img_author = BillyDoe or img_author = JillDoe or img_author = JohnDoe ... x100 times
做这些中的任何一个,我是否会有任何性能损失/收益两种方式?或者有更好的选择,例如多查询等。总是谈论性能明智,哪种方法会更少资源激烈?
谢谢。
我会使用连接执行单个查询,以便您查询要查找的img_author名称,然后针对此表连接以获取img_path信息。
您还没有显示您提到的第一个查询来确定作者姓名,所以我无法为您提供具体示例。该查询可能如下所示:
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 */
在嵌套循环中执行查询绝对应被视为要避免的反模式,除非您有非常具体的原因这样做并了解性能权衡。