Php MySQL查询需要很长时间才能显示

Php MySQL查询需要很长时间才能显示,php,mysql,Php,Mysql,下面的代码可以工作,但页面加载需要几分钟的时间。基本上,我正在查询数据库中任何即将发生的事件,并对每个事件的quantity列求和。活动活动少于30场,平均每场活动30张门票 谢谢 <?php $rowsquery="SELECT * FROM listings WHERE show_date > DATE_SUB(CURDATE(), INTERVAL 3 DAY) ORDER BY show_date"; $result=mysql_query($rowsquery); $n

下面的代码可以工作,但页面加载需要几分钟的时间。基本上,我正在查询数据库中任何即将发生的事件,并对每个事件的quantity列求和。活动活动少于30场,平均每场活动30张门票

谢谢

<?php

$rowsquery="SELECT *
FROM listings
WHERE show_date > DATE_SUB(CURDATE(), INTERVAL 3 DAY)
ORDER BY show_date";
$result=mysql_query($rowsquery);

$num=mysql_numrows($result);

mysql_close();

?>


<?php
$i=0;
while ($i < $num) {

$item_number=mysql_result($result,$i,"item_number");
$show_date=mysql_result($result,$i,"show_date");
$show_time=mysql_result($result,$i,"show_time");
$headline=mysql_result($result,$i,"headline");
$double_head=mysql_result($result,$i,"double_head");
$price=mysql_result($result,$i,"price");
$opening_stock=mysql_result($result,$i,"opening_stock");
$available_online=mysql_result($result,$i,"available_online");
$booking_fee=mysql_result($result,$i,"booking_fee");
$total_price=$price+$booking_fee;

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

$total = "SELECT SUM(i.quantity) as total_tickets 
FROM paypal_ipn_orders o, paypal_ipn_order_items i
WHERE i.item_number = '$item_number'
AND i.raw_log_id = o.raw_log_id
AND o.payment_status != 'Refunded'
ORDER BY UPPER(o.last_name)";
$sRow = mysql_fetch_array(mysql_query($total));
$totaltkts = $sRow['total_tickets'];

mysql_close();
?>


确保数据库中where子句中的所有字段都有索引-项目编号、原始日志id、付款状态

那么您的问题是什么?此外,还应该显示数据库模式move
UPPER
。。所以,
orderby(o.last_name)”;
while在哪里结束?您的
mysql_连接(localhost,$username,$password)的具体原因是什么
低于您以前的查询?先连接,然后查询。您在循环的每一次迭代中都在进行连接?这是非常低效的,再加上使用
mysql提取值的结果
也同样糟糕。很抱歉,我正在努力自学,最近我更改了上面的代码,因为它没有考虑到“已退款”的门票不包括在总数中。当时我添加了第二个SELECT语句,我猜由于显示结果所需的时间,该语句效率低下。我以前使用的代码没有问题是…$total=“SELECT SUM(quantity)作为paypal_ipn_order_items的total_tickets,其中item_number='$item_number';$sRow=mysql_fetch_数组(mysql_query($total));$totaltkts=$sRow['total_tickets'];