-1

我在两个单独的表中有一个 BigInteger 值列表,比如 t1 和 t2。它们使用 MySQL Workbench 作为长文本数据类型插入。我想检查 t1 中的每个值是否存在于 t2 中。我执行了以下语句:

SELECT  *
FROM    t1
WHERE   col1.t1 IN
   (
     SELECT col1.t2 
     FROM   t2
   ) ;

但声明似乎永远不会结束(数十万条记录)。现在我想将数字重新插入为 BIGINT,因为比较数字会比文本快。我使用 Java 程序从文本文件中逐行读取这些 BigInteger 值。该程序给了我以下错误:

DB_Error:_com.mysql.jdbc.MysqlDataTruncation:数据截断:列的值超出范围

我怎么解决这个问题?我需要尽快比较 BigInteger 的值。

4

2 回答 2

0

你为什么不试试

    SELECT t1.* FROM t1,t2 WHERE t1.col1=t2.col2;

这会快得多。

于 2012-08-21T09:05:53.563 回答
0

在您的第一次尝试中,尝试为文本列 t1.col1 和 t2.col1 创建索引。然后使用这个查询:

select distinct t1.col1 from t1 join t2 on (t1.col1=t2.col1)
于 2012-08-21T10:28:51.220 回答