よろしくお願いします。

2000件のデータA(8ケタ)と、30000件のデータB(15ケタ)をマッチングさせる処理を
しているのですがCPUがテンパって固まります(セレ500Mhz)。
データ共に数値です。

まずデータBを全て動的変数に格納してから、
データAを一件づつ読み込んでLike演算子で配列の先頭からマッチングさせて、
コレをループさせているのですが
やはりこれでは効率が悪いでしょうか?
ニ分木検索で行ったほうがよいでしょうか。

アドバイスありましたらよろしくおながいします。