我在两个单独的表中有一个BigInteger值列表,比如t1和t2。它们使用MySQL Workbench作为longtext数据类型插入。我想检查t1中的每个值,如果它存在于t2中。我执行了以下声明:
SELECT *
FROM t1
WHERE col1.t1 IN
(
SELECT col1.t2
FROM t2
) ;
但声明似乎永远不会结束(数十万条记录)。现在我想重新插入数字作为BIGINT,因为比较数字将比文本更快。我使用Java程序从文本文件中逐行读取这些BigInteger值。该程序给我以下错误:
DB_Error:_com.mysql.jdbc.MysqlDataTruncation:数据截断:超出 列的范围值
我该如何解决这个问题?我需要尽可能快地比较BigInteger vales。
答案 0 :(得分:0)
你为什么不试试
SELECT t1.* FROM t1,t2 WHERE t1.col1=t2.col2;
这会快得多。
答案 1 :(得分:0)
在您第一次尝试时,尝试为文本列t1.col1和t2.col1创建索引。然后使用此查询:
select distinct t1.col1 from t1 join t2 on (t1.col1=t2.col1)