DBの件数が1000万程度までいってしまっているためselect→mysql_resultをfor文で
まわすことが非常に効率悪いのではないかと思いまして。
phpの関数で何か非常に効率のいいものがあったら教えていただきたいと思った次第です。

UPするtextファイルが大体10万件程度、ngデータとして
データベースに格納されているデータがおよそ1000万件(ngデータはtxtファイルとして保存もしてあります)。
その二つの間で重複削除をかけてngデータとして所持してない文字列のみを出力したいのですが
下記の形式を試し、あまりに時間がかかりすぎるためngのデータを配列に読み込みarray_diff
により差分配列を作成してからそれをファイルに出力するのがより高速かと思い試してみようと思った次第です。
そんなんよりもっと早い方法ご存知の方いらっしゃいましたらぜひとも教えていただきたいです。


$fl_name=$FILES['fl']['tmp_name']     
$array_file=file($fl_name);
for($i=0;$i<count($array_file);$i++)     //count($array_file)は10万程度
{
$rs=mysql_query("select *from ng where id='".$array_file[$i]."'");
$rt=mysql_num_rows($rs);
if($rt==0){fwrite($fl,$array_file[$i]);}
}