【发布时间】:2023-03-22 12:00:01
【问题描述】:
假设我有这张桌子:
img_id, img_author, img_path
1 | BillyDoe | img1.jpg
2 | BillyDoe | img2.jpg
3 | BillyDoe | img3.jpg
我运行另一个符合某些特定条件的查询 并且该查询返回一个数组,其中包含许多 img_author 名称,例如: BillyDoe、JillDoe、JohnDoe 等...
我要做的第二件事是获取所有图像 从与作者姓名匹配的图像表中
与所有作者一起创建一个循环会更好吗 命名返回的前一个查询并多次运行查询,像这样
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
我是否会有任何形式的性能损失/增益做这些 两种方式?或者有更好的选择,比如多查询等。 总是在谈论性能方面,哪种方法会更少资源 激烈?
谢谢。
【问题讨论】:
-
很确定你需要在那里转义这些字符串,因为
img_author=BillyDoe不是有效的 SQL,除非BillyDoe是一个列。 -
第一个查询是在同一张表还是不同的表上找到作者?
-
对
ORs 使用一个查询。最好有作者ids 并使用它可能使用IN()子句。
标签: php mysql operators mysqli-multi-query