Indeksy obce - sens ich stosowania

0

Czy warto zakładać indeks obcy pomiędzy tabelami aby stworzyć relację między nimi dla wyszukań po danej wartości która w pierwszej tabeli jest kluczem a w drugiej miała by być kluczem obcym? Rozumiem że klucz obcy może narzucać spójność wartości między dwoma tabelami i np. kaskadowo usuwać rekordy. Ale jeśli nie jest to moim priorytetem a najważniejsze są selecty wyszukujące wartości z jednej kolumny na podstawie klucza głównego z drugiej i mogę tu zastosować zwykłe indeksowanie to czy zastosowanie klucza obcego coś przyspieszy w selectach?

1

Nie przyspieszy, ale jednak elegancko jest tworzyć takie klucze żeby zachować spójność.

0

Dzięki

0

InnoDB tworzy indeksy dla kluczy obcych, więc w tym przypadku może przyspieszyć.

http://stackoverflow.com/questions/304317/does-mysql-index-foreign-key-columns-automatically

InnoDB requires indexes on foreign keys and referenced keys so that foreign key checks can be fast and not require a table scan. In the referencing table, there must be an index where the foreign key columns are listed as the first columns in the same order. Such an index is created on the referencing table automatically if it does not exist. (This is in contrast to some older versions, in which indexes had to be created explicitly or the creation of foreign key constraints would fail.) index_name, if given, is used as described previously.

1 użytkowników online, w tym zalogowanych: 0, gości: 1