我可以将多个SQL请求作为单个请求执行

Ske*_*ith 1 sql optimization

这是情况,我有3个看起来像这样的表.

table foo
type number
a    1
b    2
c    3
d    4

table bar
number shape
1      square
2      circle
3      triangle
4      rectangle

table foobar
shape     colour 
square    red
circle    green
triangle  blue
rectangle yellow
triangle  purple
Run Code Online (Sandbox Code Playgroud)

他们都有我没有列出的独特ID.
我有类型,但我想找到颜色.现在我可以做三个SQL请求来获取它,但由于SQL可能是瓶颈所以我想知道我是否可以将三个SQL请求合并为一个请求.

是否可以执行此操作并且它将比三个单独的SQL请求运行得更快

1将返回红色,3将返回蓝色和紫色.

Jac*_*cob 5

SELECT fb.colour
FROM foo AS f
INNER JOIN bar AS b ON f.number = b.number
INNER JOIN foobar AS fb ON b.shape = fb.shape
WHERE f.type = "YOURTYPE"
Run Code Online (Sandbox Code Playgroud)

您可以使用 JOINS连接行并使用where子句指定所需的类型.这样做肯定会更快:

SELECT number FROM foo WHERE type="YOURTYPE"
SELECT shape  FROM bar WHERE number="NUMBERRETRIEVEDFROM"
SELECT colour FROM foobar WHERE shape="SHAPE"
Run Code Online (Sandbox Code Playgroud)