2014-11-02 115 views
0

我有这个查询。假设尚未创建索引,那么如何使用索引对此进行优化,以便查询运行速度更快?我如何创建索引?MySQL JOIN查询索引优化

select c.company_name, c.company_id FROM companies AS c 
JOIN users AS u USING(companyid) 
JOIN jobs AS j USING(userid) 
JOIN useraccounts AS ua USING(userid) 
WHERE j.jobid = 10; 

任何帮助将不胜感激。

回答

1

您应该在JOIN子句中使用的所有列上都有索引。您可以创建索引要么CREATE INDEXALTER TABLE命令:

CREATE INDEX u_companyid ON users (companyid); 

ALTER TABLE users ADD INDEX (companyid); 

注意,表的主键索引已经,你并不需要显式地添加一个索引。

+0

你的意思是我必须在users.company_id,jobs.user_id和useraccounts.user_id上添加索引吗?如果是的话,我想念其他列需要索引? – Bogz 2014-11-02 08:52:51

+0

@MarkBonnieVestil正好 – Strawberry 2014-11-02 08:56:04

+0

@Barmar谢谢你。如何索引companies.company_id。它会帮助我在上面的查询中获得更快的性能吗? – Bogz 2014-11-02 09:00:23