Dizeleri büyük bir listeden veri almak için SQL sorgusu

0 Cevap php

Ben dizeleri (1500 email addresses to be more specific) geniş bir liste var ve ben dizeleri her biri için çok büyük bir DB tablodaki verilerin bir parçası bakmak gerekir (e.g. the primary key, mydataitem ) . Ben bunu nasıl verimli yapabilirim?


Örneğin, bu şekilde çok yavaş (amongst other problems):

$stringArray = ('foo','bar','baz',..., 'for 1000s of items');

foreach($stringArray as $mystring) {
    $res = mysql_query("select mydataitem,blah FROM users WHERE blah = '$mystring'");
    $info=mysql_fetch_assoc($res);
    ...
}

Bunu engellemek istiyorum şeyler:

  • Ben liste üzerinde döngü istiyorum ve her öğe için bir SELECT yapmıyoruz. yani 1500 sorguları (as in example above)
  • Çok fazla bellek alacaktı, çünkü ben bir sorguda bir diziye bütün tabloyu okumak ve kod arama yapmak istemiyorum. DB tablo 100k + satır var.
  • Sorgu çok büyük olurdu, çünkü ben 1499 ameliyathanelerinde ile büyük bir sorgu oluşturmak istemiyorum. (Örneğin, "select mydataitem FROM users WHERE blah = 'aaa' OR blah = 'bbb' OR ...")

Not: Ben kullanarak MySql v5.0.45 ediyorum


Update: Thanks everyone - for some reason I thought IN sadece Tamsayı kimlik listeleri için oldu -. Şimdi daha iyi biliyorum

0 Cevap