optymalizacja postgresql

0

cześć mam takie pytanie, czy możecie mi doradzić jak postąpić.
mam bazę danych, w której jest aktualnie kilka tysięcy rekordów, jednak ilość danych szybko rośnie (może być kilkaset dziennie). problem polega na tym, że w bazie jest pole code(8-10 znaków). co jakiś czas przychodzi code (albo kilka) z innego miejsca i muszę zobaczyć czy go(ich) nie ma w bazie. Gdy dostanę 10 codów to przelecenie całej bazy dla tych 10 elementów długo trwa. W bazie prócz code jest trochę innych danych. myślałem, żeby zrobić oddzielną tabelę, w której będą tylko code'y, czy to przyśpieszy przeszukanie? zakładać index w tej nowej bazie? (w tej "dużej" nie ma indexów)

macie jakieś pomysły?

0

Ja bym zrobił oddzielną tabelę z code i jakiś tam id. Do tego wyzwalacz, który po dodawaniu rekordu sprawdza czy taki code już istnieje i sam nadaje klucz obcy do tej głównej tabeli.

0

przenoszenie do innej tabeli (bo chyba to masz na myśli pisząc bazę danych) nie ma najmniejszego sensu. Pytanie numer jedne - czy na tym polu jest indeks założony? Jeśli nie ma to cudów oczekujesz czy co?

0

Kilka tysięcy rekordów to nie jest dużo, nawet bez indeksu. Pokaż jak to robisz...

1

Pokaż zapytanie z którego korzystasz. Możliwe, że przy like'ach z dwoma % baza nie skorzysta Ci z indeksu i wtedy albo inny typ indeksu albo np Lucyna

I czasem abyś nie miał pomysłu na zmianę bazy u nas wyszukiwanie trwa około 400ms na tabelach po 300 mln wierszy więc jak widać się da...

1 użytkowników online, w tym zalogowanych: 0, gości: 1