To zależy od twojego silnika. Powszechnie wiadomo, że odczyty są tanie, kilka bajtów tutaj i nie wpłynie to znacząco na wydajność bazy danych od małych do średnich.
Co ważniejsze, zależy to od zastosowań, do których wkładasz klucz podstawowy. Serie całkowite mają tę zaletę, że są proste w użyciu i implementacji. Zaletą jest to, że w zależności od konkretnej implementacji metody serializacji mają tę zaletę, że można je szybko uzyskać , ponieważ większość baz danych przechowuje tylko numer seryjny w stałej lokalizacji, zamiast uzyskiwać go Select max(ID)+1 from foo
w locie.
Powstaje pytanie: w jaki sposób 5-znakowy klucz stanowi „znaczącą wartość” dla Ciebie i dla aplikacji? Jak tworzona jest ta wartość i czy zajmuje to mniej więcej czasu niż znalezienie rosnącego numeru seryjnego. Podczas gdy w niektórych liczbach całkowitych jest oszczędna ilość miejsca, zdecydowana większość systemów zignoruje tę oszczędność miejsca.
Nie ma to wpływu na wydajność, z wyjątkiem tego, że schemat postaci wymaga, aby nigdy nie istniał automatyczny silnik, ponieważ „klucze” są niewystarczające. W przypadku konkretnej domeny nie zawracaj sobie głowy sztucznymi kluczami i po prostu używaj chińskich, japońskich i tajskich nazw kluczy. Chociaż nie możesz zagwarantować wyjątkowości w stosunku do jakiejkolwiek możliwej aplikacji, w twoim zakresie rozsądniej jest używać ich zamiast okropnych i wymuszonych skrótów 5-znakowych. Dopóki nie dojdziesz do milionów krotek, nie ma to znaczącego wpływu na wydajność.
Alternatywnie, jeśli śledzisz tylko według kraju pochodzenia, a nie konkretnej kuchni regionalnej (kantońskiej, Syczuańskiej, Sycylijskiej, Umbryjskiej, Kalabryjskiej, Jukatekańskiej, Oaxacan itp.), Zawsze możesz po prostu użyć kodów ISO 3166 .
Jeśli mam 10 000 przepisów, czy różnica między kluczem 5 i 20 znaków nie zaczyna się sumować?
Przestrzeń jest tania . Być może, kiedy mówisz o 10 000 000 przepisów, na których wykonujesz operacje OLAP. Przy 10 000 przepisach patrzysz na 150 000 miejsca.
Ale znowu to zależy. Jeśli masz wiele milionów rekordów i łączysz się z nimi, wówczas sensowne jest denormalizowanie wyszukiwania czegoś tak trywialnego (w zmaterializowanym widoku). We wszystkich praktycznych celach względna wydajność łączenia na nowoczesnej maszynie między kluczem 5-znakowym a kluczem o zmiennej długości jest tak podobna, że jest identyczna. Na szczęście żyjemy w świecie obfitości procesora i dysku. Te nieprzyjemne to zbyt wiele połączeń i nieefektywność zapytań, a nie porównywanie znaków po znaku. Powiedziawszy to, zawsze testuj .
Rzeczy P&T na tym poziomie są tak zależne od bazy danych, że uogólnienia są niezwykle trudne. Zbuduj dwa przykładowe modele bazy danych, wypełnij je szacunkową liczbą rekordów, a następnie sprawdź, który z nich jest szybszy. Z mojego doświadczenia wynika, że długość postaci nie robi dużej różnicy w porównaniu z dobrymi indeksami, dobrymi konfiguracjami pamięci i innymi krytycznymi elementami dostrajania wydajności.