MySQL Force Index

MySQL Force Index
Szczególną wartość w polu tabeli można szybko przeszukiwać za pomocą indeksu. Jeśli w tabeli nie zostanie zdefiniowany indeks, wyszukiwanie rozpocznie się od pierwszego rekordu i przestanie wyszukiwać tam, gdzie istnieje wartość wyszukiwania. Jeśli wartość wyszukiwania nie istnieje w tabeli, wyszukiwanie zatrzyma się po iterowaniu ostatniego rekordu. Jest to bardzo czasochłonne dla dużego stołu. MySQL używa indeksów dla pól tabeli, aby wyszukiwać szybciej. Optymalizator zapytania MySQL Server jest użytecznym komponentem do optymalizacji wykonywania zapytania za pomocą dostępnych statystyk. Jeśli statystyki pokazują, że wartość wyszukiwania istnieje w większości rekordów tabeli, nie ma korzyści z korzystania z indeksu. Jeśli statystyki pokazują, że wartość wyszukiwania istnieje w kilku rekordach tabeli, korzystanie z indeksu jest korzystne, aby wyszukiwać szybciej. MySQL może wymusić indeks, gdy optymalizator zapytania ignoruje indeks.

Składnia:

Składnia indeksu siły podano poniżej.

WYBIERAĆ *
Z nazwy Table_name
Indeks sił (indeks_list)
Gdzie stan;

Tutaj lista index_.

Wymagania wstępne:

Musisz utworzyć tabelę bazy danych z danymi w bazie danych mysql, aby sprawdzić funkcję indeksu siły MySQL. Otwórz terminal i połącz się z serwerem MySQL, wykonując następujące polecenie.

$ sudo mysql -u root

Uruchom następujące polecenie, aby utworzyć nazwaną bazę danych test_db.

Utwórz bazę danych test_db;

Uruchom następujące polecenie, aby wybrać bazę danych.

Użyj test_db;

Uruchom następujące zapytanie, aby utworzyć tabelę o nazwie pracownicy z pięcioma polami.

Utwórz tabelę „pracowników” (
„id” int (11) auto_increment,
„Nazwa” varchar (50) nie null,
„Post” varchar (25) nie null,
Data „dołączania_date” nie null,
„Wynagrodzenie” Int Not Null,
Klucz podstawowy (id));

Uruchom następujące zapytanie, aby dodać sześć wartości do tabeli pracowników.

Wstaw do „pracowników” („id”, „nazwa”, „post”, „dołączanie_date”, „pensja”) wartości)
(Null, „Nur Jahan”, „Assistant Manager”, „2021-01-05”, 78000),
(NULL, „Asif Iqbal”, „Manager”, „2019-03-20”, 56000),
(Null, „Jafar Iqbal”, „Assistant Manager”, „2021-12-31”, „60000”),
(Null, „Sefali Akter”, „Marketing Officer”, „2022-01-01”, „65000”),
(Null, „Apurbo Chowdhury”, „CEO”, „2013-05-15”, „350000”),
(NULL, „NIROB HASAN”, „Manager”, „2019-12-18”, „58000”);

Przykład-1: Sprawdź domyślny indeks

Po utworzeniu tabeli klucz podstawowy zostanie domyślnie zdefiniowany jako indeks. Uruchom następujące polecenie, aby sprawdzić bieżącą listę indeksu pracowników.

Pokaż indeksy od pracowników;

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego zapytania. Dane wyjściowe pokazuje, że Btree indeks został przypisany dla ID pole pracownicy tabela.

Jeśli dla żadnego indeksu nie jest przypisany dla wynagrodzenie pole pracownicy Tabela po utworzeniu tabeli, wszystkie rekordy tabeli zostaną zeskanowane przez optymalizator zapytania do następującego zapytania. Wyjaśnić Słowo kluczowe jest używane tutaj, aby uzyskać informacje o wykonaniu zapytania Wybierz.

Wyjaśnij Wybierz * od pracowników
Gdzie wynagrodzenie> = 60000;

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego zapytania. Wyjście pokazuje, że wszystkie wiersze były zobowiązane do wykonania zapytania i filtrowania danych z pracownicy tabela.

Przykład-2: Sprawdź wykonanie zapytania po utworzeniu indeksu

Musisz zdefiniować indeks dla wynagrodzenie pole pracownicy Tabela, aby poprawnie zoptymalizować zapytanie. Uruchom następujące zapytanie, aby utworzyć indeks dla wynagrodzenie pole pracownik tabela.

Utwórz indeks_salary na pracownikach (wynagrodzenie);

Uruchom ponownie następujące polecenie, aby sprawdzić aktualny status indeksu tabeli pracowników.

Pokaż indeksy od pracowników;

Wyjście:

Po wykonaniu powyższego polecenia pojawi się następujące dane wyjściowe. Wyjście pokazuje, że w tabeli pracowników istnieją dwa indeksy BTREE.

Uruchom poprzednie zapytanie Wybierz ponownie, aby sprawdzić informacje o wykonaniu zapytania. Wyjście instrukcji wyjaśniających może nie być dokładne dla tabeli zawierającej kilka rekordów lub może się różnić dla różnych wykonań. Lepiej jest dodać duże rekordy do tabeli, aby uzyskać w przybliżeniu prawidłowy wynik.

Wyjaśnij Wybierz * od pracowników
Gdzie wynagrodzenie> = 60000;

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego zapytania. Wyjście pokazuje, że 4 wiersze były wymagane do wykonania zapytania i filtrowania danych z pracownicy tabela. Zgodnie z wyjściem czas wykonywania zapytania jest 0.04 sekundy, które uzyskuły dostęp do 4 wierszy, aby uzyskać wyjście.

Przykład-3: Sprawdź wykonanie zapytania po użyciu indeksu siły

Optymalizator zapytania użyje zdefiniowanego indeksu, czy nie, co zależy od stanu zapytania, liczby rekordów zapytania i liczby pasujących wierszy tabeli w oparciu o warunek.

Uruchom następujące zapytanie, aby zmusić optymalizator zapytania do użycia indeks_salary indeks w momencie wykonywania zapytania. Wskaźnik siły Instrukcja jest używana przed klauzulą ​​Where of the Select Query, aby zmusić optymalizator zapytania do użycia indeks_salary indeks.

Wyjaśnij Wybierz * od pracowników
Indeks sił (indeks_salary)
Gdzie wynagrodzenie> = 60000;

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego zapytania. Wyjście pokazuje, że 4 wiersze były wymagane do wykonania zapytania i filtrowania danych z pracownicy tabela. Zgodnie z wyjściem czas wykonywania zapytania jest 0.00 sekundy, które uzyskuły dostęp do 4 wierszy, aby uzyskać wyjście. To wyjście może również różnić się dla różnych egzekucji.

Wniosek:

Funkcja indeksu siły MySQL jest przydatna podczas wyszukiwania konkretnej wartości w tabeli zawierającej dużą liczbę rekordów. Sposób utworzenia indeksu dla tabeli i wymuszanie optymalizatora zapytania do użycia tego indeksu mocno w momencie wykonywania zapytania za pomocą instrukcji Force INDEKCJA został pokazany w tym samouczku.