Pominięcie indeksu w mysql

Pominięcie indeksu w mysql
AL
  • Rejestracja: dni
  • Ostatnio: dni
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? :)

SH
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 109
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

mr_jaro
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Grudziądz/Bydgoszcz
  • Postów: 5300
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.

YA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2384
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.

AL
  • Rejestracja: dni
  • Ostatnio: dni
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).

mr_jaro
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Grudziądz/Bydgoszcz
  • Postów: 5300
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ź.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.