大家好我正在使用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张桌子
答案 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...)