KWALIFIKACJA INF3 - STYCZEŃ 2016

PYTANIE NR 19.
W celu przyśpieszenia operacji na bazie danych należy dla pól często wyszukiwanych lub sortowanych
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Indeks jest strukturą danych, która pozwala silnikowi bazy szybciej odnajdywać i porządkować rekordy dla często filtrowanych lub sortowanych kolumn, ograniczając pełne skanowanie tabeli. Klucz obcy i więzy integralności służą głównie spójności danych, a dodatkowa tabela zwykle zwiększa złożoność zapytań.

Pełne wyjaśnienie:

Jeżeli w bazie danych często wykonujesz zapytania filtrujące (np. warunek WHERE) albo sortujące wyniki (np. ORDER BY) po tej samej kolumnie lub zestawie kolumn, typowym sposobem przyspieszenia jest utworzenie indeksu. Indeks działa jak "spis treści" dla danych: pozwala szybciej znaleźć pasujące wiersze bez konieczności przeglądania całej tabeli, a w niektórych przypadkach ułatwia też sortowanie wyników.

Odpowiedź "utworzyć indeks." jest poprawna, bo indeksy są projektowane właśnie do optymalizacji odczytu danych (wyszukiwania i sortowania). W praktyce różne DBMS mogą używać różnych typów indeksów, ale sama zasada pozostaje wspólna: właściwie dobrany indeks zmniejsza koszt wykonania zapytania.

"dodać klucz obcy." jest odpowiedzią błędną jako metoda celowego przyspieszania wyszukiwania/sortowania. Klucz obcy służy do utrzymania relacji i integralności referencyjnej między tabelami. Może on pośrednio wymuszać pewne indeksowanie w niektórych silnikach lub projektach, ale jego podstawowym celem nie jest zwiększanie wydajności zapytań wyszukujących czy sortujących.

"dodać więzy integralności." także jest błędne w kontekście wydajności wyszukiwania/sortowania. Więzy (np. CHECK, UNIQUE, referencyjne) dbają o poprawność danych przy INSERT/UPDATE/DELETE i mogą nawet dodać narzut przy modyfikacjach. Nie są narzędziem optymalizacji SELECT/ORDER BY jako takim.

"stworzyć osobną tabelę przechowującą tylko te pola." jest błędne, bo rozdzielenie danych bez uzasadnienia zwykle prowadzi do konieczności dodatkowych złączeń (JOIN) lub utrzymywania redundancji. To może pogorszyć wydajność i zwiększyć złożoność projektu. Jeśli problemem jest szybkość wyszukiwania i sortowania, pierwszym krokiem są indeksy oraz analiza planu wykonania zapytania (np. narzędziami typu EXPLAIN).

Wskazówka egzaminacyjna: gdy w treści pojawiają się słowa "często wyszukiwanych" lub "sortowanych", najczęściej chodzi o indeksy, a nie o mechanizmy spójności danych.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Indeks to dodatkowa struktura danych tworzona na kolumnie lub kolumnach tabeli, która pomaga szybciej odnajdywać rekordy. Dzięki indeksowi silnik bazy może ograniczyć liczbę odczytów i uniknąć pełnego przeglądania tabeli przy wielu zapytaniach.
Indeks przechowuje uporządkowane informacje o wartościach kolumny oraz wskazania do wierszy. Gdy używasz warunku WHERE, baza może znaleźć pasujące zakresy szybciej niż przy skanowaniu wszystkich rekordów, co skraca czas odpowiedzi.
Jeśli sortujesz po kolumnie objętej indeksem, DBMS może wykorzystać już uporządkowaną strukturę indeksu, aby zwrócić dane w odpowiedniej kolejności lub ograniczyć koszt sortowania. Nie zawsze zadziała, ale często jest to istotna optymalizacja.
Nie jest to jego podstawowy cel. Klucz obcy zapewnia integralność referencyjną między tabelami. Wydajność zapytań poprawia się głównie przez indeksy, dobre zapytania SQL i analizę planu wykonania; klucze obce są przede wszystkim mechanizmem poprawności danych.
Więzy integralności pilnują poprawności i spójności danych (np. zakaz wartości spoza zakresu, unikalność, zgodność relacji). Mogą zwiększać bezpieczeństwo danych, ale zwykle nie są narzędziem do przyspieszania wyszukiwania lub sortowania w wynikach zapytań.
Indeks nie zawsze jest korzystny: przy bardzo małych tabelach, przy kolumnach o małej selektywności (wiele tych samych wartości) lub gdy tabela jest intensywnie modyfikowana. Indeksy przyspieszają odczyt, ale mogą spowalniać INSERT/UPDATE/DELETE.
Zbyt wiele indeksów zwiększa zużycie miejsca na dysku oraz narzut na operacje modyfikacji danych, bo każdy indeks trzeba aktualizować. Może to pogorszyć wydajność zapisu. Dlatego indeksy dobiera się pod realne zapytania, a nie "na wszelki wypadek".
W praktyce używa się narzędzi do analizy planu zapytania, np. komendy typu EXPLAIN lub odpowiedników w danym DBMS. Plan pokazuje, czy wykonywany jest skan indeksu, czy pełne skanowanie tabeli oraz jaki jest szacowany koszt operacji.
Podział danych na dodatkową tabelę często wymusza złączenia (JOIN), które mogą być kosztowne. Bez właściwych indeksów i przemyślanego modelu danych zysku nie będzie, a czasem wydajność spadnie przez dodatkowe operacje łączenia i większą złożoność zapytań.
Ćwicz rozpoznawanie sytuacji, w których indeks pomaga: częste filtrowanie i sortowanie. Naucz się odróżniać pojęcia: indeks (wydajność) vs klucze i więzy (spójność). Przećwicz na przykładach zapytań z WHERE i ORDER BY oraz analizę planu.
info

Około 55% zdających odpowiada poprawnie na to pytanie. średnie

W praktyce zawodowej kluczowe jest to, że indeks jest strukturą danych, która pozwala silnikowi bazy szybciej odnajdywać i porządkować rekordy dla często filtrowanych lub sortowanych kolumn, ograniczając pełne skanowanie tabeli.

Źródła:

  • PostgreSQL Documentation: "Indexes" (Chapter 11), https://www.postgresql.org/docs/current/indexes.html - accessed 2026-03-02
  • MySQL 8.0 Reference Manual: "Optimization and Indexes" / "How MySQL Uses Indexes", https://dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html - accessed 2026-03-02
  • Microsoft Learn: SQL Server Indexes (overview), https://learn.microsoft.com/en-us/sql/relational-databases/indexes/indexes?view=sql-server-ver16 - accessed 2026-03-02

Materiały:

  • Dokumentacja DBMS: rozdziały o indeksach i planach zapytań
  • Materiały kursowe SQL: indeksy, klucze, normalizacja
  • Ćwiczenia praktyczne z EXPLAIN/EXPLAIN ANALYZE dla zapytań z WHERE i ORDER BY

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego