Teradata: tabela multiset vs. set – gdzie jest różnica?

Teradata: tabela multiset vs. set – gdzie jest różnica?

W tym krótkim poście dowiesz się jaka jest różnica między tabelą SET i MULTISET oraz dlaczego musisz znać te różnicę przed utworzeniem swojej tabeli.

Tabela SET

Tabele zdefiniowane jako SET przede wszystkim nie pozwalają na przechowywanie duplikatów. Teradata nie pozwoli Ci także na utworzenie tego typu tabeli definiując ją jako NO PRIMARY INDEX. Spójrzmy na poniższy przykład:

CREATE SET TABLE STUDY (
STUDY_ID INTEGER,
STUDY_NAME VARCHAR(10),
STUDY_STATUS BYTEINT);

INSERT INTO STUDY VALUES (1,'XYZ', 0);

Ok, utworzyliśmy tabele i wstawiliśmy do niej pierwszy rekord. Spróbujmy dodać duplikat:

INSERT INTO STUDY VALUES (1,'XYZ', 0);

W tym momencie pewnie dostaliście błąd “Duplicate row error in STUDY“.Duplikaty w tej tabeli nie są dozwolone.

Tabela MULTISET

Tabele MULTISET pozwalają na przechowywanie duplikatów. Zdefiniujmy tym razem tabele COUNTRY jaki tabele MULTISET: 

CREATE MULTISET TABLE COUNTRY (
COUNTRY_ID INTEGER,
COUNTRY_NAME VARCHAR(50),
COUNTRY_CODE VARCHAR(2));

INSERT INTO COUNTRY VALUES (1,'POLAND', 'PL');

A teraz spróbujmy zrobić to, co w tabeli SET nie może mieć miejsca – dodajmy duplikat:

INSERT INTO COUNTRY VALUES (1,'POLAND', 'PL');

Typ tabeli a wpływ na wydajność

Jeśli zdefiniujesz swoją tabele jako SET, za każdym razem kiedy wstawiasz bądź aktualizujesz dane w niej zawarte, Teradata sprawdza je pod względem duplikatów. Przy małych tabelach nie ma to dużego znaczenia, ale jeśli tabele zawierają naprawdę dużo danych, operacje te zajmą o wiele więcej czasu niż te same operacje na tabeli MULTISET.

W porządku, ale co jeśli chcę, aby moja tabela przechowywała unikalne dane?

Najlepsza odpowiedzią na to pytanie będzie unikalny indeks główny (UPI).

Jeśli spodobał Ci się ten post to zostaw proszę komentarz poniżej lub udostępnij ten post na swoim Facebook’u, Twitter’ze, LinkedIn lub innej stronie z mediami społecznościowymi.
Dzięki!

Leave a Reply

avatar
  Subscribe  
Powiadom o
Close Menu