我正在使用SQLite处理大量数据(例如100gb数据)。
我需要以最快的方式在另一张表中查找一列的值。 例如,我需要找到表1的以下值
[COD]
C62
K801
然后在表2中找到它们:
[COD_2]
C60-C63
K80-K81
我想要的结果是:
[COD_1] [COD_2]
C62 C60-C63
K801 K80-K81
由于我有很多数据,因此执行以下操作效率不高:
SELECT *
FROM TABLE_1, TABLE_2
WHERE COD_1 LIKE '%' || COD_2 || '%';
相反,我正在尝试这样做:
SELECT *
FROM TABLE_1
WHERE COD_1 IN (SELECT COD_2 FROM TABLE_2);
当然不会因为代码不完全相同而导致这种情况。有没有一种方法可以使用IN搜索另一表中某一列的相似值(类似于LIKE运算符)?还是不通过TABLE_1和TABLE_2的其他方式?
谢谢!!! 对我有用。
答案 0 :(得分:0)
基于显示的小数据集,以及我对@Shawn问题的假定答案(K801是一个错字,并且应该是K80或K81),我假设以下问题描述:
在COD_2中查找一行,以使COD_1中的值介于COD_2中的 {value1}-{value2}
之间; -
是重要且可靠的。
我不能讲速度,但是我会这样处理:
SELECT value1, value2
from COD_1,COD_2
where value1 between substr(value2,1,instr(value2,'-')-1) and substr(value2,instr(value2,'-')+1)
想法是:将COD-2中的值分为“开始”值和“结束”值。