Mam bardzo proste zapytanie SQL:postgresql COUNT (DISTINCT ...) bardzo powolny
SELECT COUNT(DISTINCT x) FROM table;
Moja tabela ma około 1,5 miliona wierszy. To zapytanie działa dość wolno; zajmuje około 7,5s, w porównaniu do
SELECT COUNT(x) FROM table;
, która zajmuje około 435ms. Czy istnieje sposób na zmianę mojej zapytania w celu zwiększenia wydajności? Próbowałem już grupowania i regularnego liczenia, jak również umieszczania indeksu na x; oba mają taki sam czas wykonania 7,5s.
Nie sądzę. Uzyskanie różnych wartości 1,5 miliona rzędów będzie po prostu powolne. – Ryan
Po prostu próbowałem go w języku C#, otrzymując różne wartości 1,5 miliona * liczb całkowitych z pamięci * zajmuje ponad jedną sekundę na moim komputerze. Więc myślę, że prawdopodobnie masz pecha. – Ryan
Plan zapytania będzie w dużym stopniu zależał od struktury tabeli (indeksów) i ustawień stałych strojenia (pracy), efektywnego rozmiaru_cache, losowego_page_cost). Przy rozsądnym strojeniu zapytanie może zostać wykonane w czasie krótszym niż sekunda. – wildplasser