2011-10-27 24 views
11

Jeśli wiem, że wartość kolumny powinna zawsze być w zakresie dozwolonym przez typ danych smallint, z punktu widzenia zachowania integralności danych, to wydaje mi się, że będę przechowywać dane w kolumnie smallint zamiast w kolumnie int.smallint vs int na wydajność

Jednak zastanawiam się, czy są jakieś wyniki wydajności, które mogą być wypłacane za pomocą mniej bajtów?

Odpowiedz

11

Mniejsze typy = mniej miejsca na dysku, co prowadzi do bardziej wydajnych indeksów. Jednak wzrost wydajności będzie minimalny, chyba że zajmie się dużą ilością danych; Ponadto w celu uniknięcia niejawnych konwersji (które mogą zrównoważyć wzrost wydajności), należy upewnić się, że za każdym razem, gdy odwołujesz się do tej kolumny, używasz poprawnego typu (w tym porównania z parametrami itp.).

Prawdopodobnie pranie w obie strony.

2

Jak wspomina Stuart, spodziewam się, że różnice w wydajności i przechowywaniu są nieznaczne.

Warto również rozważyć "domenę", którą chcemy modelować z podanym typem. Jeśli smallint dokładniej modeluje domenę dla danych, to warto ją wyraźnie wyrazić, nawet jeśli nie daje zauważalnej poprawy wydajności.