| Termin | Definicja |
|---|---|
| Tabela wynikowa | Tabela wynikowa to zbiór wierszy zwracany przez wykonanie zapytania SELECT. Zbiór wierszy zwracany przez zapytanieTabela wynikowa powstaje w momencie wykonania zapytania i istnieje tylko na czas jego obsługi. Nie ma odzwierciedlenia w plikach bazy, nie ma nazwy i nie da się jej otworzyć później, chyba że zostanie zapisana do tabeli tymczasowej albo do zwykłej tabeli poleceniem tworzącym ją na podstawie wyniku. Jej struktura wynika z listy kolumn po słowie SELECT, przy czym kolumny obliczane, na przykład sumy i połączone teksty, otrzymują nazwy nadane aliasem albo nazwy zastępcze generowane przez silnik. Wynik nie ma też z definicji ustalonej kolejności wierszy. Jeśli nie podano warunku sortowania, silnik może zwrócić dane w dowolnym porządku i przy kolejnym uruchomieniu porządek ten bywa inny. Kursory, stronicowanie i przesyłanie wyniku do aplikacjiAplikacja rzadko dostaje cały wynik naraz. Sterownik pobiera go partiami, a program przechodzi po wierszach kursorem, co ma znaczenie przy dużych zbiorach, bo pamięć stacji roboczej nie pomieściłaby milionów rekordów. Stąd bierze się stronicowanie w raportach oraz mechanizmy ograniczające liczbę zwracanych wierszy. Warto rozróżnić widok, czyli zapisane zapytanie wykonywane na żądanie, od tabeli tymczasowej, w której wynik zostaje materialnie zapisany na czas sesji. Kolejna warstwa to prawa dostępu, bo użytkownik zobaczy w wyniku tylko te kolumny i wiersze, do których ma uprawnienia, co potrafi tłumaczyć różnice w raportach między dwoma stanowiskami. Puste wyniki i raporty, które się nie zgadzająNajczęstsze zgłoszenie brzmi, że raport pokazuje zero pozycji, choć dane w programie są. Zwykle odpowiada za to warunek na dacie porównywanej z tekstem, złączenie wewnętrzne odrzucające rekordy bez odpowiednika w drugiej tabeli albo filtr uwzględniający dokumenty tylko jednego typu. Drugi typowy przypadek to zawyżone sumy po złączeniu, gdy jeden dokument ma kilka pozycji i wartość nagłówka zostaje policzona tyle razy, ile jest wierszy. Trzeci to zapytanie działające coraz wolniej, aż do przekroczenia limitu czasu, bo tabela urosła, a brakuje odpowiedniego indeksu. Czwarty to zawieszenie raportu przez blokadę założoną przez inną operację zapisu. Raporty z programów handlowych, które przestały działaćZgłoszenia od firm dotyczą zwykle nie samego SQL, lecz efektu: zestawienie sprzedaży nie chce się wygenerować albo pokazuje inne liczby niż miesiąc temu. Sprawdzamy wtedy stan bazy, indeksy, wielkość plików dziennika i wydajność serwera, a przy uszkodzeniach odtwarzamy dane z kopii. Zajmujemy się wdrażaniem i serwisem oprogramowania handlowego, więc naprawę doprowadzamy do momentu, w którym raport znów się zgadza, a nie do samego rozpoznania przyczyny. Działamy całą dobę, także w dni wolne, gdy zamknięcie miesiąca nie może czekać. |