对于在 while 循环中生成的不同时间戳值,我有一个非常低效的查询运行数百/数千次。如何从 while 循环中获取 $start_date 和 $start_date_interaval 的所有不同值?
我尝试使用 IN 子句以及使用 OR 的多个 WHERE 进行子查询,但本质上它与单独运行查询相同。这太慢了,太慢了,因为表包含一个非常大的数据集。我确定有一种更简单的方法,但不确定是什么。
while ($start_date <= $end_date) {
$date_array[] = date('d/m/Y H:i:s', strtotime($start_date));
$start_date_interval = date('Y-m-d H:i:s', strtotime($start_date) + $interval);
echo date('d/m/Y H:i:s', strtotime($start_date)) . ' ------> ';
$query = "SELECT COUNT(id) AS totalcalls FROM calls "
. "WHERE (use = 1 AND ((start_time >= '$start_date' AND start_time < '$start_date_interval') "
. "OR (start_time > '$start_date_past' AND start_time < '$start_date_interval' "
. "AND end_time >= '$start_date')));";
$result = mysqli_query($connection, $query);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
$data[] = $row['call_count'];
echo $row["call_count"] . ' active calls.<br>';
$start_date = date('Y-m-d H:i:s', strtotime($start_date) + $interval);
}