gpt4 book ai didi

mysql - MySQL 中的 UNION ALL 和 LIMIT

转载 作者:IT老高 更新时间:2023-10-28 23:58:20 25 4
gpt4 key购买 nike

假设我要执行这个查询:

(SELECT a FROM t1 WHERE a=10 AND B=1) 
UNION ALL
(SELECT a FROM t2 WHERE a=11 AND B=2)
UNION ALL
(SELECT a FROM t3 WHERE a=12 AND B=3)
ORDER BY a LIMIT 1000;

如果“t1”中有 550 个结果可用,“t2”中有 450 个结果可用,MySQL 是否足够聪明,可以跳过“t3”?

我正在查看 MySQL 文档 ( http://dev.mysql.com/doc/refman/5.1/en/union.html),但似乎找不到答案。

最佳答案

目前,即使前几个查询中有足够的行,MySQL 也会在联合上执行所有选择,正如@Yuki Inoue 在他们的回答中提到的那样。使用@user1477929 的答案,您可以将查询重写为:

(SELECT a FROM t1 WHERE a=10 AND B=1 LIMIT 1000) 
UNION ALL
(SELECT a FROM t2 WHERE a=11 AND B=2 LIMIT 1000)
UNION ALL
(SELECT a FROM t3 WHERE a=12 AND B=3 LIMIT 1000)
ORDER BY a LIMIT 1000;

这将给您最多 1000 行,并且从不扫描超过 3000 行。

关于mysql - MySQL 中的 UNION ALL 和 LIMIT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4008486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com