Chciałbym pójść z tym, co proponuje @Michael.
Wydobywając miesiąc i rok z daty jest super szybki z EXTRACT
lub to_char()
, prawdopodobnie nie ma potrzeby wstępnego przetwarzania.
I na dysku date only occupies 4 byte nie jest lepiej.
Alternatywą są dwie kolumny integer
z ograniczeniami kolumn, aby zabezpieczyć przed nielegalnymi datami. Zajmuje 2x 4 bajty.
Lub nawet smallint
, aby zaoszczędzić pamięć RAM i miejsce na dysku. Przeczytaj i zrozum, wyrównanie danych w pamięci na dysku. W wielu przypadkach nic nie oszczędzasz z kolumnami smallint
. Napisałem o tym więcej tutaj: Calculating and saving space in PostgreSQL
Najlepiej wybrać kolumnę z datą.
Powinieneś zaakceptować jedną z odpowiedzi, jeśli ci pomogły – aydow