gpt4 book ai didi

mysql - 在这里加入似乎是不必要的

转载 作者:行者123 更新时间:2023-11-29 01:38:09 25 4
gpt4 key购买 nike

TableA
------
id
Name
other_fields

TableB
------
A_id (foreign key to TableA.id)
other_fields

TableB 中选择条目,这些条目引用了 TableA 中具有某些特定属性的条目(例如 Name = "Alice")

这可以通过连接轻松完成:

SELECT TableB.*
FROM TableA INNER JOIN TableB on TableA.id = TableB.A_id
WHERE TableA.Name = "Alice"

习惯于过程化编程,连接似乎有点矫枉过正而且没有必要,因为我们实际上不需要 TableA 中的任何信息,除了 id 爱丽丝

那么——假设 Alice 是唯一的——有没有办法做到这一点(伪代码):

variable alice_id = get id of Alice from TableA

SELECT *
FROM TableB
WHERE A_id = alice_id

如果是,是否应该使用它来支持经典的 JOIN 方法?它更快吗? (当然是原则上)

最佳答案

你问你是否可以这样做:

SELECT * FROM TableB WHERE A_id = (SELECT id FROM TableA WHERE Name = 'Alice');

这是一个完全合法的查询,但 MySQL 在执行连接时会执行得更好,因为子查询被视为第二个单独的查询。使用 MySQL EXPLAIN命令(只需将其放在 SELECT 查询的前面)将显示用于查询的索引、临时表和其他资源。当一个查询比另一个查询更快或更有效时,它应该让您了解。

关于mysql - 在这里加入似乎是不必要的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33554970/

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