mysql查询花费了太多时间来执行

时间:2014-11-14 12:05:07

标签: mysql phpmyadmin

大家好我正在使用phpmyadmin数据库。每当我尝试执行查询时,显示结果需要花费10多分钟的时间。有没有办法加快速度。请回复。

查询

SELECT ib.*, b.brand_name, m.model_name,
       s.id as sale_id, br.branch_code,br.branch_name,r.rentry_date,r.id as rid
  from in_book ib 
  left join brand b on ib.brand_id=b.id
  left join model m on ib.vehicle_id=m.id
  left join re_entry r on r.in_book_id=ib.id
  left join sale s on ib.id=s.in_book_id
  left join branch br on ib.branch_id=br.id
 where ib.id !=''
   and ib.branch_id='65'
 group by ib.id
 order by r.id ASC,
       count(r.in_book_id) DESC ,
       ib.purchaes_date ASC,
       ib.id ASC

有近7张桌子

2 个答案:

答案 0 :(得分:0)

确保您在用于加入表格的每个密钥上都有index

来自http://dev.mysql.com/doc/refman/5.5/en/optimization-indexes.html

  

提高SELECT操作性能的最佳方法是在查询中测试的一个或多个列上创建索引。索引条目的作用类似于表行的指针,允许查询快速确定哪些行与WHERE子句中的条件匹配,并检索这些行的其他列值。可以索引所有MySQL数据类型。

..这当然也适用于JOIN条件。

答案 1 :(得分:0)

您没有列出任何此类索引,但是,我将从以下建议索引开始

table      index
in_book    ( branch_id, id, brand_id, vehicle_id )
brand      ( id, brand_name )
model      ( id, model_name )
re_entry   ( in_book_id, id, reentry_date )
sale       ( in_book_id, id )
branch     ( id )

此外,使用MySQL,你可以使用一个特殊的关键字“STRAIGHT_JOIN”告诉引擎按照你选择表的顺序进行查询......虽然你正在进行LEFT JOIN,但我认为它不重要看来辅助表都是表的查找类型,in_book是您的主要表。但只是尝试一下......

SELECT STRAIGHT_JOIN  (...rest of query...)