Php 选择像这样的东西的最快方法

Php 选择像这样的东西的最快方法,php,mysql,select,while-loop,Php,Mysql,Select,While Loop,我想选择比这更快的速度。我的页面加载在执行脚本时非常慢 $bmw= mysqli_query($con,"SELECT * FROM cars WHERE name='bwm' ORDER BY date DESC LIMIT 1"); $mercedes= mysqli_query($con,"SELECT * FROM cars WHERE name='mercedes' ORDER BY date DESC LIMIT 1"); $audi= mysqli_query($con,"SE

我想选择比这更快的速度。我的页面加载在执行脚本时非常慢

$bmw= mysqli_query($con,"SELECT * FROM cars WHERE name='bwm' 
ORDER BY date DESC LIMIT 1"); $mercedes= mysqli_query($con,"SELECT * FROM cars
WHERE name='mercedes' ORDER BY date DESC LIMIT 1"); 
$audi= mysqli_query($con,"SELECT * FROM cars WHERE name='audi'
ORDER BY date DESC LIMIT 1"); 
$skoda= mysqli_query($con,"SELECT * FROM cars WHERE name='skoda' 
ORDER BY date DESC LIMIT 1");
然后像下面这样回显,就像页面加载非常慢一样

 while($row = mysqli_fetch_array($bmw)) { echo $row['name'] . " " .
 $row['date'];

 }

 while($row = mysqli_fetch_array($mercedes)) { echo $row['name'] . " "
 . $row['date'];

 }

 while($row = mysqli_fetch_array($audi)) { echo $row['name'] . " " .
 $row['date'];

 }

提前感谢

您编写的查询没有任何错误,您的性能问题可能是由于:

  • 缺少名称和日期索引:创建名称和日期索引
  • 汽车数据库对于您的硬件来说太大:新硬件/分区/重新设计
  • 网络链接慢:Lacy K提供的解决方案很有趣,因为只有一个查询发送到mysql
您还可以通过只选择名称和日期而不选择日期来稍微提高性能*

select name, date from ...

为什么不一次选择所有make,如下所示:

$q= mysqli_query($con,"SELECT * FROM cars WHERE name IN ('bwm', 'mercedes', 'audi', 'skoda') ORDER BY date DESC LIMIT 1"); 

    while($row = mysqli_fetch_array($q)) { 
     if($row['name'] == 'bmw'){
      echo $row['name'] . " " . $row['date'];
     }
     elsif($row['name'] == 'mercedes'){
      echo $row['name'] . " " . $row['date'];
     }
     elsif($row['name'] == 'audi'){
      echo $row['name'] . " " . $row['date'];
     }
     elsif($row['name'] == 'skoda'){
      echo $row['name'] . " " . $row['date'];
     }
     else{
      echo $row['name'] . " " . $row['date'];
     }

    }

您的查询应该很快,所以我想列名称和/或日期没有索引。谢谢,但是这样好吗?您对查询进行了解释吗?你看过表上的索引了吗?你不会找到太多带有此代码的“bmw:-)除此之外,如果你在程序中只使用“name”和“date”列,最好只选择这些列。@Ronald谢谢,我只想从数据库中的每辆车中选择一辆,并从bmw.php与所有车建立链接。他被告知这一点,好的,我没有在网站上搜索他的问题,所以我不知道其他人已经向他建议了这一点。我只是简单地回答了这个问题,与这个问题没有任何联系。