저는 MySQL과 PHP의 초보자입니다.forloop에서 MySQL을 사용하여 데이터베이스에서 데이터 가져 오기
날짜 범위 (하루 1 일에서 2 일까지, 다음 날 2에서 3 일까지 등)로 데이터를 가져 오는 데 필요한 코드는 다음과 같습니다.
function getData($query) {
global $connect;
$result = mysqli_query($connect, $query);
if (!$result) {
echo 'MySQL Error: '.mysqli_error($connect);
die();
}
return mysqli_fetch_assoc($result);
}
$dayZero = date_create('2017-01-21');
$dayToday = date_create('Y-m-d');
$diff = date_diff($dayZero, $dayToday)->format('%a');
for ($i = 0; $i < $diff; ++$i) {
$start[$i] = date('Y-m-d', date_format($dayZero, 'U') + (24*60*60)*($i));
$end[$i] = date('Y-m-d', date_format($dayZero, 'U') + (24*60*60)*($i+1));
$days[$i] = getData('SELECT count(*) AS "b" FROM `table_name` WHERE `timestamp` BETWEEN "'.$start[$i].'" AND "'.$end[$i].'"')['b'];
}
코드는 예상대로 작동하지만 매우 느리게 실행됩니다. 내 추측은 그것이 반복 될 때마다 데이터베이스를 검사해야하기 때문입니다.
더 빠르게 실행할 수있는 방법이 있습니까? 아니면 제가 할 수있는 최적화가 있습니까?
타임 스탬프 계산을 건너 뛰고'timestamp BETWEEN '2017-01-21'AND '2017-01-22'(단지 예제)를 사용할 수 있습니다. 또한 쿼리를 다시 확인하십시오. 보이지 않습니다. – Raptor
주어진 기간 내에 행 수만 얻으려고합니까? –
@ Marc-AntoineParent '2017-01-21'부터 매일 행 번호를 얻으려고합니다. –