Php mysql select查询在使用where子句时非常慢

Php mysql select查询在使用where子句时非常慢,php,mysql,mysqli,Php,Mysql,Mysqli,当我使用上述代码时,查询工作正常 但是当我使用下面的代码时,mysql非常慢 if ($result = mysqli_query($link, "SELECT * FROM `users`")) { while ($row = mysqli_fetch_assoc($result)) { } } 有人能告诉我为什么以及如何加快查询速度吗?您需要在name列上添加索引以加快查询速度。有很多方法可以加快查询速度 避免使用*,因为它首先查找所有列,然后给出它们。 解决方案

当我使用上述代码时,查询工作正常

但是当我使用下面的代码时,mysql非常慢

if ($result = mysqli_query($link, "SELECT * FROM `users`")) {
      while ($row = mysqli_fetch_assoc($result)) {

      }
}

有人能告诉我为什么以及如何加快查询速度吗?

您需要在
name
列上添加索引以加快查询速度。

有很多方法可以加快查询速度

  • 避免使用
    *
    ,因为它首先查找所有列,然后给出它们。 解决方案-手动使用属性名称,例如:

    if ($result = mysqli_query($link, "SELECT * FROM `users` WHERE name IS NULL")) {
          while ($row = mysqli_fetch_assoc($result)) {
    
          }
    }
    
  • 在查询中使用

  • 用于找出可以使用的索引以及实际使用的索引。如有必要,创建适当的索引


  • 定义“非常慢”。你有多少行table@YourCommonSense我在表1中有5000行没有提供特定的数字。索引可能是答案,尽管这取决于数据库设置的其余部分,以及该表的其他操作(即这是一个每周执行一次的一次性选择,而不是每天执行1000次写入…?等等)。如果您有另一列已编制索引,则在select中使用该列作为子句可以加快它的速度。如果可能,这还取决于您的设置和其他查询,并不总是实用/可能/推荐的
    Select `name`, `age`, `XYZ` from `users` where `name` IS NULL