1

배정 밀도 외래 키를 정수 기본 키에 조인하는 최고 성능 쿼리는 무엇입니까? 테이블은 데이터 공급 업체에서 가져온 것이므로 열 데이터 형식을 변환하지 않을 것입니다.정수 기본 키로 배정 밀도 외래 키 조인 필요

이 예제에서 fk는 배정 밀도이고 pk는 정수입니다.

라운드를 사용해야합니까?

SELECT this_table.pk, other_table.some_col FROM this_table 
INNER JOIN other_table ON other_table.pk = ROUND(this_table.fk) 

변환이 필요하지 않을 수도 있습니다.

감사합니다.

답변

2

정수와 복식을 직접 결합 할 수 있습니다. MySQL은 타입 캐스팅 자체를 관리합니다. ROUND (double)는 정수가 아닌 double을 반환합니다.

조인은 정수를 나타내는 복식에 대해서만 성공합니다. 즉, 6.0에서 6에 직접 참여할 수 있습니다. 당신이 6 6.000001 가입 원하는 경우 직접 6.000001

(6)에 가입 할 수 없습니다, 이중의 범위는 6.0 < = 6 < 7.0의 값을 가입 정수로 캐스팅. . .

select ... 
from table_with_integers n 
inner join table_with_doubles d 
    on cast(d.double_column as unsigned integer) = n.integer_column 
... 

또는() 내지 6.0 < = 6 < 6.5의 값을 가입 ROUND를 사용한다.

double 형이 정수를 나타내는 것으로 가정하면 형 변환이 더 적합합니다. 그러나 double이 정수를 나타내는 것으로 가정하면, 처음에는 6.000001과 같은 값을 가져서는 안됩니다.