저는 인덱스를 가장 잘 이해하려고합니다.외래 키에 대한 인덱스
Microsoft SQL Server 2012를 쿼리하여 70-261 개 중 하나 인 경우 기본 또는 고유 제약 SQL Server가 자동으로 고유 인덱스를 만들 때를 말합니다.
그러나 외래 키에 대한 색인은 작성되지 않습니다.
따라서 조인을보다 효율적으로 만들려면 외래 키에 non_clustered 인덱스를 만드는 것이 가장 좋습니다.
저는 인덱스를 가장 잘 이해하려고합니다.외래 키에 대한 인덱스
Microsoft SQL Server 2012를 쿼리하여 70-261 개 중 하나 인 경우 기본 또는 고유 제약 SQL Server가 자동으로 고유 인덱스를 만들 때를 말합니다.
그러나 외래 키에 대한 색인은 작성되지 않습니다.
따라서 조인을보다 효율적으로 만들려면 외래 키에 non_clustered 인덱스를 만드는 것이 가장 좋습니다.
확실하지 않은 질문이 있습니다.
색인은 고유 제한 조건을 적용하는 데 사용됩니다.
기본적으로 FK는 색인을 필요로하지 않습니다.
그러나 FK에 인덱스가있는 경우 쿼리 최적화 프로그램에서 조인에 인덱스를 자주 사용합니다.
이 쿼리에서 docMVEnum1.valueID는 인덱스가있는 FK입니다.
쿼리 최적화 프로그램이 해당 인덱스를 사용했습니다.
색인을 사용하더라도 여전히 가장 비용이 많이 드는 부분이었습니다.
select docMVEnum1.sID, docEnum1.value
from docMVEnum1
join docEnum1
on docEnum1.valueID = docMVEnum1.valueID
또한 본질적으로 FK는 종종 where 절에서 사용됩니다.
색인은 무료가 아닙니다.
선택을 향상 시키지만 삽입 및 업데이트 속도를 늦추십시오.
아니요, foreign keys
에 index
을 만들 필요가 없습니다. 더 효율적으로 조인을 수행 할 것이라고 약속하지 않습니다.
고유 및 PK에 대한 색인은 INSERT 및 UPDATE 성능을 향상시키기 위해 작성됩니다. 당신이 JOIN
으로 쿼리하는 동안
Mytable
열
ColumnFK1
및
Description
에서 선택합니다
MyTable
의 모든 관련
ID
의를 찾을 수
index scan
를 사용하는 것입니다 당신이
MyTable
(
ID int (PK),
Description varchar(max),
ColumnFK int (FK to LookupTable)
)
Table LookupTable
(
ID int (PK),
Description varchar(max)
)
SELECT MyTable.ID, MyTable.Description, MyTable.ColumnFK, LookupTable.Description
FROM MyTable
INNER JOIN LookupTable
on LookupTable.ID = MyTable.ColumnFK,
WHERE ID between 5 and 10000
같은 테이블의 몇 가지를 말할 수 있습니다.
unique
또는 pk
에 FK를 추가 할 생각이라면 같은 테이블에 여러 개의 FK가있을 경우 어떻게 될지 평가하십시오.
의도적으로 술어 MyTable.Description
에 추가하여 varchar (max)로 지정하여 이러한 쿼리의 데이터에 도달했음을 보여줍니다.