查询花费太长时间才能响应

时间:2019-09-08 17:22:28

标签: mysql sql

我有php项目列表。

我正在从我的sql数据库中获取一个数组。

一切正常,但最近的记录正在增加,并且突然没有在列表中显示记录。

建议!

我尝试了内部联接,但记录较少,这很正常

查询是:

  SELECT farmer.*, state.state_name, videos.video_url, employee.name AS nm 
      FROM farmer 
      LEFT JOIN state ON state.id = farmer.state 
      LEFT JOIN videos ON videos.farmer_id = farmer.id 
      LEFT JOIN employee ON farmer.employee_id = employee.id 
      WHERE farmer.is_deleted = 0 
      ORDER BY farmer.id DESC;

1 个答案:

答案 0 :(得分:0)

要调试MySQL如何执行此查询,请使用EXPLAIN

解决此类问题的一种简单方法是正确使用indexes

  • 基于EXPLAIN的输出,确定执行联接时正在使用哪个column ref
  • 在这些列上创建索引,可以是单独的索引,也可以根据其行为来组合索引。
CREATE INDEX index_name ON table_name (col_name);  -- for composite key you can mention multiple columns.

如何帮助

  • 没有索引,MySQL会扫描完整表以查找联接表的每个记录以匹配特定记录。
  • 该索引将帮助MySQL本身直接访问所需的记录,这可以大大提高性能。

参考