如何比较两个BigInteger值?

时间:2012-08-21 09:01:32

标签: mysql

我在两个单独的表中有一个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。

2 个答案:

答案 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)