gpt4 book ai didi

mysql - 从表中选择其他表中最有效的方式

转载 作者:太空宇宙 更新时间:2023-11-03 12:01:04 24 4
gpt4 key购买 nike

我的 mySQL 数据库中有一张 ID 号列表;我有第二个表,其中包含 From_IDTo_IDFrequency 列。

我想创建第三个表,它与第二个表具有相同的结构,但只包含第一个表中“来自”和“至”ID 的那些行。

第一个表有 ≈ 80k 行,第二个表有 ≈ 4500 万行。花费的时间太长,以至于该过程似乎没有在合理的时间内结束(不少于一天)。

我目前的查询如下:

CREATE table3 AS (SELECT * FROM table2 
WHERE from_id IN (SELECT id FROM table1)
AND to_id IN (SELECT id FROM table1);

如果有人能告诉我更有效的方法来解决这个问题,我将不胜感激!

最佳答案

首先,使用 exists 而不是 in:

SELECT t2.*
FROM table2 t2
WHERE EXISTS (SELECT 1 FROM table1 t1 WHERE t1.id = t2.from_id) AND
EXISTS (SELECT 1 FROM table1 t1 WHERE t1.id = t2.to_id);

然后确保您在 table1(id) 上有一个索引。后者非常重要。

请注意:您可以在用户界面中测试查询,方法是将 limit 100limit 1000 等放到查询中。这将使您了解随着数据的增长性能如何。

关于mysql - 从表中选择其他表中最有效的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29187379/

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