2014-11-02 125 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