gpt4 book ai didi

mysql - LEFT JOIN 很快,但 RIGHT JOIN 很慢,即使两个表上的索引相同

转载 作者:行者123 更新时间:2023-11-28 23:49:08 28 4
gpt4 key购买 nike

我有两个表,都有大约 200,000 条记录。我想在 KEY 上加入他们,这是一个字符串。

两个表都有一个索引KEY,VALUE。当我运行时:

   SELECT vpn, t1_sku, t2_sku 
FROM first_inventory
LEFT JOIN second_inventory USING (vpn)

真的很快。这是解释输出:

 ----------------------------------------------------------------------------------------------------------------------------
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
|----|-------------|------------------|----------|-----------------|---------|-----------|---------|--------|--------------|
| 1 | SIMPLE | first_inventory | index | | t1_vpn | 158 | | 204437 | Using index |
| 1 | SIMPLE | second_inventory | ref | t2_vpn | t2_vpn | 387 | func | 1 | Using index |
----------------------------------------------------------------------------------------------------------------------------

但是,当我进行 RIGHT JOIN 时,它需要永远并且永远不会完成:“SELECT vpn, t1_sku, t2_sku FROM first_inventory RIGHT JOIN second_inventory USING (vpn)”。这是解释输出:

 ----------------------------------------------------------------------------------------------------------------------------
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
|----|-------------|------------------|----------|-----------------|---------|-----------|---------|--------|--------------|
| 1 | SIMPLE | second_inventory | index | | t1_vpn | 773 | | 220996 | Using index |
| 1 | SIMPLE | first_inventory | index | | t2_vpn | 158 | | 204437 | Using index |
----------------------------------------------------------------------------------------------------------------------------

我可以看到 RIGHT JOIN 查询似乎在查看 220996 x 204437 行,而 LEFT JOIN 似乎只在查看 204437 行,但我不知道为什么,因为我在两个表上都创建了相同的索引。

在两个表的末尾都写着:

PRIMARY KEY ('id'),
KEY 't1_vpn' ('vpn','t1_sku') USING BTREE
and
PRIMARY KEY ('id'),
KEY 't2_vpn' ('vpn','t2_sku') USING BTREE

知道为什么 RIGHT JOIN 查询需要这么长时间吗?

最佳答案

问题是其中一个表中包含 UTF-8 内容。我将所有内容都更改为 Latin1,它现在双向运行都很快。

参见:this discussion

关于mysql - LEFT JOIN 很快,但 RIGHT JOIN 很慢,即使两个表上的索引相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32928382/

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