Pominięcie indeksu w mysql

0

Witam wszystkie mózgi :) Pytanie może banalne, ale z racji iż jakoś od deski do deski nigdy nie byłem obryty z mysqlem pojawiła się wątpliwość i muszę ją rozwiać właśnie teraz.
Struktura tabeli wygląda mniej więcej tak (nieistotne rzeczy ukryłem),
title

Jednak gdy robię explain w polu key nic nie widzę.

title
pomyślałem że może to specyfika samej metody explain ale w innych tabelach również posiadam takie pole z takim samym rodzajem indeksu i tam wyświetla go w polu key.
Pytanie, czego nie wiem? :)

1

To chyba będzie Twój problem. Kolumna ma dopuszczalny null.

https://dev.mysql.com/doc/refman/8.0/en/problems-with-null.html

2

A jest wiele rekordów w tej tabeli? Bo może algorytm po prostu uważa, że przez to, że jest niedużo to szybciej wykona się bez patrzenia na klucze.

2

W tej tabeli masz aż 6 wierszy? To po co robic odczyt bloku indeksu i jeszcze jeden odczyt bloku tabelki? Taniej raczej 1 operację I/O zrobić. Dorzucić tam troooochę danych i zobacz jeszcze raz.

0
Soul_hunter_16 napisał(a):

To chyba będzie Twój problem. Kolumna ma dopuszczalny null.

https://dev.mysql.com/doc/refman/8.0/en/problems-with-null.html

null który jest możliwy dla tego pola z pewnością nie jest problemem gdyż dodałem go dopiero po zaobserwowaniu tej sytuacji.
Ogólnie zawsze staram się sam rozwikłać problem, jednak pierwszy raz od wielu lat utkwiłem na takim drobiazgu i zastanawiam się czy to zmęczenie i czegoś nie widzę,
czy po prostu jakiś wyjątek a ja o nim nie wiem :)

yarel napisał(a):

W tej tabeli masz aż 6 wierszy? To po co robic odczyt bloku indeksu i jeszcze jeden odczyt bloku tabelki? Taniej raczej 1 operację I/O zrobić. Dorzucić tam troooochę danych i zobacz jeszcze raz.

W tabeli będzie kilka milionów wierszy (jeszcze nad dzieleniem się nie zastanawiam) , indeks oczywiście z racji tego iż rekordy będą przypisane do użytkowników i będą dosyć często pobierane. 6 wierszy jest obecnie do testu, dla przykładu w innej tabeli gdzie również jest user_id z takim samym indeksem wykonuje takie samo zapytanie i bez problemu używa klucza (również jest tam 6 wierszy).

1

To, że dla jednej tabeli używa indexu a dla drugiej nie przy tej samej liczbie rekordów nic nie znaczy. Dodaj tam 100 rekordów i wtedy sprawdź.

1 użytkowników online, w tym zalogowanych: 0, gości: 1