Zacznijmy od tego artykułu, otwierając terminal powłoki Ubuntu 20.04 Szybko. Aby to zrobić, użyj klucza skrótu „Ctrl+alt+t”. Po pomyślnym uruchomieniu terminalu Shell musisz zaktualizować system Linux za pomocą poleceń aktualizacji i aktualizacji za pomocą pakietu Apt. Następnie otwórz bazę danych SQLITE za pomocą instrukcji „SQLite3”. W tej chwili nie mamy jak dotąd żadnych tabel w bazie danych, ja.mi. używając .Polecenie tabel.
Aby utworzyć indeksy w wyrażeniach, potrzebujemy tabeli w naszej bazie danych. Utworzyliśmy nową tabelę o nazwie „szczegóły” w naszej bazie danych zawierającej łącznie 3 kolumny typu liczb całkowitych, i.mi. ID, sprzedaż detaliczna i sprzedaż. Stół jest teraz pusty, ja.mi. Zgodnie z poleceniem Select.
Utwórz szczegóły tabeli (Id int podstawowy klucz, a nie NULL, Retail Int, Sale Int);Musimy dodać niektóre rekordy w tabeli szczegółowych. W ten sposób wykorzystaliśmy instrukcję wstawienia z słowem kluczowym, a następnie nazwa tabeli „detal” i jej nazwy kolumn „ID, sprzedaż detaliczna”. Po nazwach kolumn następują wartości słów kluczowych i rekordy, które należy wprowadzić do kolumn. Wprowadziliśmy łącznie 10 rekordów w trzech kolumnach tej tabeli; Każdy z nich jest wyjątkowy, jak pokazano:
Wstaw wartości szczegółowe (identyfikator, sprzedaż, sprzedaż) (1, 340, 400);Po użyciu instrukcji Wybierz z „*” do wyświetlania wszystkich rekordów kolumn z tabeli szczegółowych, pokazaliśmy nowo włożone 10 rekordów w tabeli.
Wybierz * z szczegółów;Przed utworzeniem indeksu w wyrażeniach spojrzymy na proste zapytanie, aby pobrać rekordy za pomocą wyrażeń. Używamy również opcji kolejności w zapytaniu do zorganizowania wyników zgodnie z kolejnością malejącą długości detalicznej kolumny. Do tej pory wyświetlane są 8 rekordów.
Wybierz * z szczegółów, gdzie długość (detaliczna)> 2 Zamów według długości (detaliczny) DESC;Używamy tego samego zapytania w instrukcji Plannera zapytania SQLITE, aby zobaczyć, jak działa SQLite w celu wykonania tego zapytania. Stwierdziliśmy, że musi skanować „szczegóły” całego tabeli za pomocą tymczasowego drzewa B (zrównoważone drzewo) na zamówienie według klauzuli.
Wyjaśnij plan zapytania Wybierz * Z szczegółów, gdzie długość (sprzedaż detaliczna)> 2 Zamów według długości (detaliczny) DESC;
Utwórzmy indeks na tym samym wyrażeniu „długość” w kolumnie detalicznej szczegółów tabeli. Korzystamy z instrukcji Utwórz indeks, aby utworzyć indeks „indeks_retail”.
Utwórz indeks index_retail na detale (długość (detaliczna));Po utworzeniu indeksu w tabeli szczegółowych użyliśmy planera zapytania, aby zobaczyć strukturę roboczą zapytania. Pokazuje, że zapytanie pracuje nad indeksem opartym na wyrażeniu, aby pobrać wymagane wyniki zamiast przeszukiwać całą tabelę.
Wyjaśnij plan zapytania Wybierz * Z szczegółów, gdzie długość (sprzedaż detaliczna)> 2 Zamów według długości (detaliczny) DESC;Po użyciu instrukcji Select na tym samym wyrażeniu do pobrania rekordów, dane są teraz wyświetlane w kolejności malejącej długości kolumny detalicznej.
Utwórzmy kolejne zapytanie z wyrażeniem. Tym razem wyrażenie klasy wyświetli tylko rekordy, w których suma kolumny detalicznej i sprzedaży jest większa niż 700.
Wybierz * Z szczegółów, gdzie sprzedaż detaliczna> 700;Wykorzystaliśmy poprzednią instrukcję SELECT wraz z pojedynczymi kolumnami i wyrażenie „sprzedaż detaliczna+sprzedaż> 700”, w instrukcji zapytań planowania. Wynik planowania zapytania pokazuje, że baza danych SQLITE musi wyszukiwać w całej tabeli szczegółowych, aby pobrać wymagane wyniki z tym dość nieefektywnym wyrażeniem.
Wyjaśnij plan zapytania Wybierz identyfikator detaliczny, sprzedaż, sprzedaż detaliczna+sprzedaż z szczegółów, gdzie sprzedaż detaliczna> 700;Utwórzmy nowy indeks wyrażenia „sprzedaż detaliczna”, który jest używany w poprzedniej instrukcji Wybierz. Więc wykorzystaliśmy instrukcję Utwórz indeks, aby wygenerować nowy indeks „indeks_detail” na wyrażeniu „sprzedaż detaliczna” tabeli szczegółowych. Nowo wykonany indeks „index_detail” można zobaczyć na liście indeksów zgodnie z „.Instrukcja wskaźników „Instrukcja”.
Utwórz indeks index_detail na detale (detaliczny+sprzedaż);Teraz wypróbujmy instrukcję planowania zapytań dla tej samej instrukcji wybranej zawierającej sprzedaż detaliczną+700 wyrażeń w nim używanych w klauzuli instrukcji wybranej. Po użyciu planera zapytania stwierdziliśmy, że plan SQLITE będzie przeszukiwać tylko określone wpisy szczegółów tabeli zgodnie z indeksem „indeks_detail” zawierającego wyrażenie.
Wyjaśnij plan zapytania Wybierz identyfikator detaliczny, sprzedaż, sprzedaż detaliczna+sprzedaż z szczegółów, gdzie sprzedaż detaliczna> 700;Zmodyfikujmy wyrażenie, wymieniając ze sobą nazwy kolumn bez zmiany ich wiedzy. Ilekroć używasz tej samej instrukcji Wybierz z niewielką zmianą wyrażenia, ja.mi. „Sprzedaż+detaliczna> 700”, wyświetla te same 5 wyników, ponieważ logika jest prawidłowa i to samo jest używane w poprzedniej instrukcji Wybierz.
Wybierz * Z szczegółów, gdzie sprzedaż+detaliczna> 700;Po użyciu wcześniej zmodyfikowanej instrukcji Wybierz w instrukcji planowania zapytania stwierdziliśmy, że baza danych SQLITE musi przeszukać całą tabelę „szczegółowe” tego zapytania oparte na wyrażeniu. Dzieje się tak, ponieważ nie utworzyliśmy indeksu dla nowo zmodyfikowanego wyrażenia „Sale+Retail> 700” w zapytaniu Select.
Wyjaśnij plan zapytania Wybierz identyfikator detaliczny, sprzedaż, sprzedaż+detaliczna z szczegółów, gdzie sprzedaż+detaliczna> 700;Wniosek
W tym artykule dotyczy tworzenia indeksu w różnych wyrażeniach. Próbowaliśmy użyć instrukcji zapytań, aby wyjaśnić różnicę między użyciem prostego wyrażenia w instrukcji wybranej bez żadnego indeksu a użyciem wyrażenia w instrukcji wybranej na podstawie indeksu.