MySQL 多个查询或多个“or”运算符


mysql multiple queries or multiple 'or' operators


假设我有这张表:

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 */

在嵌套循环中执行查询绝对应被视为要避免的反模式,除非您有非常具体的原因这样做并了解性能权衡。