그냥 상상 우리를 보자 여러 열에서 다른 테이블에서 ID를 선택합니다 내가 가지고있는 테이블 구조 다음개선 성능은
테이블 : 이미지
id path
1 x
2 x
3 x
4 x
5 x
6 x
7 x
8 x
테이블 : 사용자
id image imageSmall
1 1 1
2 2 2
3 4 4
표 : 서적
id image imageSmall
1 5 5
2 6 6
3 8 8
이제 다른 테이블에서 사용되는 모든 이미지의 ID를 가져 오려고합니다. 나는 많은 양의 데이터를 때,이 쿼리는 매우 많은 시간이 소요 전혀 때문에의 많은 IN
부품하지 확대됨에 될 수 있다고 여기
SELECT id FROM images WHERE id IN (SELECT image FROM user) OR id IN (SELECT imageSmall FROM user) OR id IN (SELECT image FROM books) OR id IN (SELECT imageSmall FROM books);
내가 여기에서 볼 문제이 쿼리를 만든 질문. 이 쿼리의 성능을 향상시킬 수있는 방법이 있습니까?
'SELECT DISTINCT id FROM images from WHERE id IN (SELECT image from 사용자 UNION SELECT imageSmall FROM 사용자 UNION SELECT image FROM books UNION SELECT imageSmall FROM books); – vaso123
모든 subselect는 JOIN으로 재 작성 될 수 있습니다. . 그러나 MySQL 옵티마이 저는 수행해야 할 작업에 대해 현명 할만큼 좋습니다. 즉, 상상했던 시나리오가 있는지 여부를 확인해야합니다. 많은 레코드를 작성한 후 조회 성능을 측정하십시오. MySQL이 무엇을하는지 그리고 정말로 시간을 소비 하는지를 보려면'EXPLAIN'을 사용하십시오 - 그러면 최적화 할 시간입니다. –