2014-11-02 2 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 INDEX 또는 ALTER 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

+0

@ MarkBonnieVestil 정확 하 게 – Strawberry

+0

@Barmar thanks man. 어떨까요? company.compid_id에 대한 색인 생성은 어떻게됩니까? 위의 쿼리에서 더 빠른 성능을 얻을 수 있습니까? – Bogz