-1

t1 と t2 という 2 つの別々のテーブルに BigInteger 値のリストがあります。これらは、MySQL Workbench を使用して longtext データ型として挿入されます。t2に存在する場合、t1の各値を確認したい。次のステートメントを実行しました。

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

しかし、ステートメントは決して終わらないようです (数十万のレコード)。数値の比較はテキストよりも高速になるため、数値を BIGINT として再挿入したいと思います。Java プログラムを使用して、これらの BigInteger 値をテキスト ファイルから 1 行ずつ読み取ります。プログラムで次のエラーが表示されます。

DB_Error:_com.mysql.jdbc.MysqlDataTruncation: データの切り捨て: 列の値が範囲外です

どうすればこの問題を解決できますか? BigInteger 値をできるだけ速く比較する必要があります。

4

2 に答える 2

0

最初の試行では、テキスト列 t1.col1 と t2.col1 のインデックスを作成してみます。次に、次のクエリを使用します。

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