Mysql查询执行时间减少

时间:2016-07-24 20:31:31

标签: php mysql

我在一个数据库中有三个表,如下所示: 公司,类别,搜索引擎优化。 我使用这个查询:

SELECT seo.seo, company.diafhmish, comp_cat.cat, company.category, company.foto, comp_cat.diaf, company.comp_id, company.comp_name, company.perifereia, company.polh, company.thl, company.adress 
FROM company 
INNER JOIN comp_cat 
ON comp_cat.comp=company.comp_id 
INNER JOIN categories 
ON comp_cat.cat=categories.cat_id 
LEFT JOIN seo 
ON seo.comp=company.comp_id
WHERE categories.category = '$kathgoria' AND 
company.perifereia = '$polh' 
ORDER BY company.comp_name ASC

这需要大约2.5秒来执行,但是如果我尝试相同的查询没有LEFT JOIN片段时间减少在0.5秒! 有没有办法更换LEFT JOIN?

EXPLAIN:

id | select_type | table | type possible_keys | key | key_len | ref | rows | Extra

1 | SIMPLE | comp_cat | ALL | NULL | NULL | NULL | NULL | 15549 | Using temporary; Using filesort

1 | SIMPLE | company | eq_ref | PRIMARY | PRIMARY | 4 | tileodig_tileodigos.comp_cat.comp | 1 | Using where

1 | SIMPLE | seo | ALL | NULL | NULL | NULL | NULL | 1283

1 | SIMPLE | categories | eq_ref | PRIMARY | PRIMARY | 4 | tileodig_tileodigos.comp_cat.cat | 1 | Using where

我更改了行LEFT JOIN seo ON seo.comp=company.comp_id 用:LEFT JOIN seo ON seo.comp=comp_cat.comp 两列具有相同的值,我解决了问题。

0 个答案:

没有答案