Zestawy rozmówBlog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2026 LetsGit.IT. Wszelkie prawa zastrzeżone.

LetsGit.IT/Kategorie/Bazy danych
Bazy danychmedium

Dlaczego optymalizator może wybrać zły plan zapytania i jak pomagają statystyki?

Tagi
#optimizer#statistics#cardinality#performance
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

Optymalizator wybiera plan na podstawie estymacji liczby wierszy (cardinality). Jeśli estymacje są złe (stare statystyki, nierówny rozkład danych, skorelowane kolumny), może wybrać złą kolejność joinów albo zły algorytm. Aktualne statystyki (np. ANALYZE) i odpowiednie indeksy pomagają mu lepiej estymować.

Odpowiedź zaawansowana

Głębiej

Rozwinięcie krótkiej odpowiedzi — co zwykle ma znaczenie w praktyce:

  • Kontekst (tagi): optimizer, statistics, cardinality, performance
  • Model danych i dostęp: jakie zapytania dominują (read/write ratio, sortowanie, paginacja).
  • Indeksy: kiedy pomagają, a kiedy szkodzą (write amplification, pamięć).
  • Spójność i transakcje: co jest gwarantowane i gdzie trzeba uważać.
  • Wytłumacz "dlaczego", nie tylko "co" (intuicja + konsekwencje).
  • Trade-offy: co zyskujesz i co tracisz (czas, pamięć, złożoność, ryzyko).
  • Edge-case’y: puste dane, duże dane, błędne dane, współbieżność.

Przykłady

Krótki przykład (kształt zapytania):

-- Example: index + query shape
SELECT *
FROM users
WHERE email = '[email protected]'
LIMIT 1;

Typowe pułapki

  • Zbyt ogólna odpowiedź (brak konkretów, brak przykładów).
  • Brak rozróżnienia między "średnio" a "najgorzej" (np. złożoność).
  • Pomijanie ograniczeń: pamięć, współbieżność, koszty sieci/dysku.

Pytania uzupełniające na rozmowie

  • Kiedy zastosował(a)byś alternatywę i dlaczego?
  • Jakie są typowe problemy w produkcji i jak je diagnozować?
  • Jak byś przetestował(a) edge-case’y?

Powiązane pytania

Bazy danych
Denormalizacja: kiedy warto ją zrobić i jaki jest trade‑off?
#database#denormalization#performance
Bazy danych
Co to jest covering index (index‑only scan) i czemu bywa szybszy?
#database#indexes#covering-index
Bazy danych
Selektywność indeksu: co to jest i czemu ma znaczenie?
#indexes#selectivity
#performance
Bazy danych
Co to jest write amplification i dlaczego wiele indeksów spowalnia zapisy?
#performance#indexes#write-amplification
Bazy danych
Czym jest materialized view i kiedy ma sens?
#views#materialized-view#performance
Bazy danych
Dlaczego `SELECT *` bywa ryzykowne w produkcyjnych zapytaniach?
#sql#best-practices#performance