gpt4 book ai didi

Mysql交集查询性能

转载 作者:行者123 更新时间:2023-11-30 22:18:34 26 4
gpt4 key购买 nike

我对 mysql 很陌生。我有 2 个相同的 mysql 表,每个表有 50K 行(70 列)。这些表格每天都会通过数据源更新。我需要执行一些嵌套查询,例如交集/减法等。

我尝试使用的查询之一如下。但它不能正常工作。要么需要5分钟。到 10 分钟。 (通过终端)或者它不响应。

SELECT * 
FROM table1
WHERE table1.sku IN (SELECT t1.sku
FROM ((SELECT DISTINCT sku
FROM table2)
UNION ALL
(SELECT DISTINCT sku
FROM table1)) AS t1
GROUP BY sku
HAVING Count(*) >= 2)

我怎样才能让它更快/正确地工作?我应该如何配置表/列(索引、主键等)或者我是否需要在 mysql 服务器上进行任何调整?

我尝试了几件事。我在 'sku' 上创建了 varchar(75) 索引列。我的数据库服务器在 1 CoreProcessor (Digital Ocean) 服务器上运行512MB内存。

--- 用'EXPLAIN'查询

+----+--------------------+-----------------------+-------+---------------+---------+---------+------+-------+---------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+--------------------+-----------------------+-------+---------------+---------+---------+------+-------+---------------------------------+
| 1 | PRIMARY | table1 | ALL | NULL | NULL | NULL | NULL | 30260 | Using where |
| 2 | DEPENDENT SUBQUERY | <derived3> | ALL | NULL | NULL | NULL | NULL | 65677 | Using temporary; Using filesort |
| 3 | DERIVED | table2 | range | NULL | sku_idx | 227 | NULL | 31016 | Using index for group-by |
| 4 | UNION | table1 | range | NULL | sku | 227 | NULL | 30261 | Using index for group-by |
| NULL | UNION RESULT | <union3,4> | ALL | NULL | NULL | NULL | NULL | NULL | |
+----+--------------------+-----------------------+-------+---------------+---------+---------+------+-------+---------------------------------+

最佳答案

如果我对这个特定查询的理解正确,那么您正在尝试显示表 1 中在表 2 中具有相应 sku 的所有记录。

这可以通过更简单的查询来实现:

SELECT * 
FROM table1
WHERE table1.sku IN (SELECT DISTINCT table2.sku FROM table2 )
GROUP BY table1.sku

或者,使用连接:

SELECT table1.* 
FROM table1
INNER JOIN table2 ON table1.sku = table2.sku
GROUP BY table1.sku

如果您在 table1.skutable2.sku 上有索引,这应该会立即起作用

关于Mysql交集查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37405712/

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