Mam tabelę T1 z 60 rzędami i 5 kolumnami: ID1, ID2, info1, info2, info3.Przyspiesz zapytanie, proste sprzężenie wewnętrzne z jednym dużym stołem i jednym małym stołem
Mam tabelę T2 z 1,2 miliona wierszy i kolejne 5 kolumn: ID3, ID2, info4, info5, info6.
Chcę uzyskać (ID1, ID2, info4, info5, info6) ze wszystkich wierszy, w których ID2 pasują. Obecnie moje zapytanie wygląda następująco:
SELECT T1.ID1, T2.ID2,
T2.info4, T2.info5, T2.info6
FROM T1, T2
WHERE T1.ID2 = T2.ID2;
Trwa to około 15 sekund. Moje pytanie brzmi: czy powinno to zająć tyle czasu, a jeśli nie, jak mogę to przyspieszyć? Myślę, że nie powinno, ponieważ T1 jest tak mały.
Poprosiłem PostgreSQL, aby WYJAŚNIŁO zapytanie, i mówi, że hashe T2, a następnie hash dołącza do skrótu z T1. Wydaje się, że T2 zajmuje tyle czasu. Czy istnieje sposób zapisania zapytania, aby nie musiał mieszać T2? Czy istnieje sposób, aby go buforować mieszania T2, więc nie ponownie go zrobić? Tabele będą aktualizowane co kilka dni.
Jeśli robi różnicę, T1 jest tabelą tymczasową utworzoną wcześniej w sesji.
fajnie, teraz płonie szybko =). – Claudiu
Dodałem również indeksy do reszty bazy danych, a teraz mogę dodawać do niej nowe elementy 50 razy/sekundę zamiast .. raz na 2 sekundy. Sweeet! – Claudiu
@PeterLang, jeśli mógłbyś napisać pełne zapytanie, zrozumienie tego byłoby o wiele łatwiejsze dla nowicjuszy. – 3kstc