2013-01-23 33 views
2

我使用這個select語句將讀取數據庫(MySQL的)記錄的名字:有沒有更好的方法來訪問數百個不同的數據庫記錄?

select * from table where name = 'xxx' 

但我有數百個在一個HTTP請求的名字,所以如果我使用上面的語句,我要發出數百個選擇。或者我只是使用MySQL select .. in來減少sql調用。

但它仍然太慢。那麼,有沒有更好的方法來達到我的目的?提前致謝!

+3

太慢?確保你的數據庫有一個適當的'name'列的索引,並且讓它爲你做好工作。 – jweyrich

+0

@jweyrich我的意思是我必須在一個http請求處理中發出數百個sql,因此是否使用帶索引的列不是關鍵點。 – jiluo

+0

你爲什麼不嘗試與WHERE ... IN進行通話? – Perception

回答

1

第一件事你應該有索引'名稱',如果你在哪裏使用條件。如果你有更多的條件,試圖找出更多的列可以有索引。

第二件事使用IN查詢它將解決您的數據庫調用最小化。

select * from table where name IN ('xxx', 'syz', 'abc',....); 
+0

謝謝!在我看來,沒有更好的辦法。 – jiluo

0

我想如果你把所有的名字分成塊,然後在select語句中使用這些塊,你的問題就會被修復。可以說

$names = array($n1,$n2...); 
$totalnames = count($totalnames); 
$chunksize = 50; 
$totalChunks = ceil($totalnames/$chunksize); 
for($i=0;$i<$totalChunks;$i++) 
{ 
    $j = $chunksize*$i; 
    for($k=$j;$k<=$j;$k++) 
    { 
    select statement with in 
    } 
} 
相關問題