Tym razem w kontekście wydajności. Jednym z zarzutów podnoszonych przy okazji dyskusji o kluczach naturalnych opartych o typ tekstowy jest wydajność. Można by się spierać czy klucz sztuczny oparty o typ INT jest lepszym rozwiązaniem niż klucz oparty o typ VARCHAR/CHAR/TEXT. Takiego sporu jednoznacznie rozstrzygnąć nie można. Warto jednak przyjrzeć się argumentacji dotyczącej wydajności.

By porównać oba te rozwiązania należało by przeprowadzić testy. Na całe szczęście już ktoś takie testy przeprowadził. Tym kimś jest Depesz. W dzisiejszym wpisie poruszył problem identyfikatorów liczbowych i tekstowych.

Nie będę tu opisywać całego testu. Poczytajcie jego bloga. Ważniejsze są wyniki, a te mówią, że różnica pomiędzy identyfikatorem liczbowym (INT4) i tekstowym (TEXT) jeśli chodzi o czas wykonania pojedynczego zapytania typu SELECT \* FROM tabela WHERE id = ? wynosi…

2,7% na korzyść typu liczbowego w przypadku identyfikatorów o ośmiu znakach.
4,8% na korzyść typu liczbowego w przypadku identyfikatorów o dwudziestu dwóch znakach.

Jak widać różnice są niewielkie i w przypadku typowych aplikacji biznesowych można je pominąć.