MySQL 结合子查询(“衍生”表)
示例
SELECT x, ...
FROM ( SELECT y, ... FROM ... ) AS a
JOIN tbl ONtbl.x= a.y
WHERE ...这会将子查询评估为临时表,然后评估JOIN为tbl。
在5.6之前的版本中,临时表上没有索引。因此,这可能效率很低:
SELECT ...
FROM ( SELECT y, ... FROM ... ) AS a
JOIN ( SELECT x, ... FROM ... ) AS b ONb.x= a.y
WHERE ...使用5.6,优化器可以找出最佳索引并即时创建。(这有一些开销,因此仍然不是“完美的”。)
另一个常见的范例是有一个子查询来初始化一些东西:
SELECT
@n := @n + 1,
...
FROM ( SELECT @n := 0 ) AS initialize
JOIN the_real_table
ORDER BY ...(注意:从技术上讲,这是CROSSJOIN(笛卡尔乘积),如缺少所示ON。但是它是有效的,因为子查询仅返回必须与。中的n行匹配的一行the_real_table。)
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短