gpt4 book ai didi

mysql - 大集合sql查询

转载 作者:行者123 更新时间:2023-11-30 23:25:56 24 4
gpt4 key购买 nike

我正在使用 ruby​​ 在 MySQL 数据库上执行查询。我正在寻找 uid 的匹配项:

WHERE uid in #{VERY_LARGE_COMMA_SEPARATED_LIST}

VERY_LARGE_COMMA_SEPARATED_LIST 超过 30k 个条目

VERY_LARGE_COMMA_SEPARATED_LIST = ' "one","two","three",...,"30k" '

它会导致 sql 转储错误:

Mysql2::Error - MySQL server has gone away:

有人知道这是怎么回事吗?

最佳答案

您必须遍历典型的 1MB mysql SQL 命令缓冲区。

要解决您的问题,您应该创建(可能是临时的)表 uids 其中仅包含 uid,例如

CREATE TABLE uids (uid INT NOT NULL PRIMARY KEY);

(确保 uid 存在索引)。

然后用如下几条语句将必要的 uid 插入到 uids 表中:

INSERT INTO uids (uid) VALUES (1),(5),(10),..;

最后,运行您的查询:

 WHERE uid IN (SELECT uid FROM uids)

或者像这样加入:

 SELECT m.*
FROM master m, uids u
WHERE m.uid = u.uid
...

最后,您可能想要删除您的 uids 表。

编辑:我错过了您的 uid 不是整数。只需调整其定义以使用 VARCHAR 即可。

关于mysql - 大集合sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13354366/

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