【问题标题】:Fastest way for selecting something like this选择这样的东西的最快方法
【发布时间】:2014-12-19 00:25:37
【问题描述】:

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

$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'];

 }

提前致谢

【问题讨论】:

  • 你的查询应该很快,所以我想列名和/或日期没有被索引。
  • 谢谢,这样好吗?
  • 您是否对查询进行了解释?你看过表上的索引吗?
  • 你不会用这段代码找到太多 'bmw' :-) 除此之外,如果你只在程序中使用列 'name' 和 'date',最好只选择那些列。
  • @Ronald 谢谢,我只想从数据库中的每辆汽车中选择一辆,并从中建立一个链接 bmw.php 与所有汽车。

标签: php mysql select while-loop


【解决方案1】:

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

  • 缺少名称和日期索引:创建名称和日期索引
  • 汽车数据库对于您的硬件来说太大了:新硬件/分区/重新设计
  • 网络链接慢:Lacy K 提供的解决方案很有趣,因为只有一个查询发送到 mysql

您还可以通过仅选择名称和日期而不是 * 来提高性能

select name, date from ...

【讨论】:

    【解决方案2】:

    为什么不像这样一次选择所有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'];
         }
    
        }
    

    【讨论】:

    • 好的,我没有在网站上搜索他的问题,所以我不知道其他人已经向他提出了这个建议。我只是在回答这个问题,它没有任何链接到该问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多