これが私の問題です:
私は3つの列(単純化のために-他に無関係な列があります)と3000行のデータ(単純化のために再び)を持つmySQLデータベースを持っています。
$iCount = count($item_ids);
for($i=0;$i<$iCount;$i++){
$q="SELECT item_id, value_date FROM $dataTable WHERE value_date >= $sDate AND value_date <= $eDate AND price_disc <> 'NA' AND item_id = '".$item_ids[$i]."' ORDER BY value_date";
$q=$myConn->query($q);
if($q->num_rows>0){
$x=0;
while($row=$q->fetch_assoc()){
$iData[$i][0]=$row['item_id'];
$iData[$i][1][$x]=$row['value_date'];
$x++;
}
$q->free();
}
set_time_limit(30);
}
PHP配列を埋めます(ご覧のとおり)。
上記のコードは動作していますが、現在は約 3000 回 (item_id ごとに 1 回) 繰り返されるため、非常にゆっくりと動作します。
現在と同じ形式で配列にデータを収集する方法を探しています (item_id は array[$i][0] で、value_date は array[$i][1][$x] です)。 )、ただし、3000 ではなく単一のクエリで。
注: 完全に必要でない限り、データベースを再編成する必要はありません。
これを行う簡単な方法があると確信しています。前もって感謝します。
編集: IN('.join(item_ids).') を使用して1つのクエリ文字列にすることができることは知っていますが、私が持っているものと同じ次元の配列で結果を取得する方法がわかりません説明された。