gpt4 book ai didi

mysql - MySQL 'OR' 和两个 SELECT 语句是否具有相同的复杂性?

转载 作者:行者123 更新时间:2023-11-29 05:49:21 24 4
gpt4 key购买 nike

1。 “SELECT id, name FROM Customers WHERE id = id1 OR id = id2”

2。 "SELECT id, name FROM Customers WHERE id = id1" 再一次,"SELECT id, name FROM Customers WHERE id = id2"

在MySQL的上下文中,上述两种情况是否需要相同的时间? OR 如何在内部实现 OR?

编辑:

假设 Customers 表在 id 列上建立索引

最佳答案

90% 的简单选择是开销(网络、解析、优化等)。

id = 123 OR id = 345 优化为 id IN (123, 345)。如果 id 上有一个索引(PRIMARY KEY 是一个索引),这是对表的 2 次探测。

因此,如果获取一行需要 100% 的工作量,那么获取 2 行大约需要 110%(90% 的开销,然后是 2 个单位的实际工作量)。

与此同时,2 个单独 选择将为 200%。

另一方面,如果你有

WHERE x = 98 OR y = 65

没有好的索引方法。

计划 A:全表扫描,检查每一行的 x 和 y。对于一张大 table 来说真的很慢。

B计划:改成

( SELECT ... WHERE x = 98 )
UNION
( SELECT ... WHERE y = 65 )

这将更像是 200%。也就是说,在这种情况下进行两次查询有帮助

C 计划是“索引合并联合”,优化器只是偶尔使用它。

关于mysql - MySQL 'OR' 和两个 SELECT 语句是否具有相同的复杂性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55902466/

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