Mam tabelę mysql, gdzie indeksowana kolumna INT będzie wynosić 0 dla 90% wierszy. Jeśli zmienię te wiersze, aby używać wartości NULL zamiast 0, czy zostaną one pominięte w indeksie, co spowoduje, że indeks będzie o 90% mniejszy?Czy wartości mysql indeksu puste?
Odpowiedz
Wygląda na to, że indeksuje także NULL
.
Bądź ostrożny podczas uruchamiania tego powodu MySQL zablokować tabela pisze podczas tworzenia indeksu. Budowanie indeksu może zająć trochę czasu na dużych tabelach, nawet jeśli kolumna jest pusta (wszystkie wartości zerowe).
Jak doszło do tego wniosku? Nie widzę żadnej wzmianki na ten temat. –
To było w komentarzach na dole artykułu. Wyciągnąłem odpowiednią część. –
Wierzę, że powodem, dla którego zajmuje dużo czasu na dużych stołach, jest to, że MySQL musi przeczytać całą tabelę, a nie dlatego, że buduje gigantyczny indeks. Mogę się mylić. –
Nie, nadal będzie je zawierał, ale nie rób zbyt wielu założeń co do konsekwencji w obu przypadkach. Wiele zależy od zakresu innych wartości (google dla "liczności").
MSSQL ma nowy typ indeksu zwany "przefiltrowanym indeksem" dla tego typu sytuacji (tzn. Zawiera rekordy w indeksie na podstawie filtru). Systemy typu dBASE miały podobne możliwości i były bardzo przydatne.
Dopuszczenie, że kolumna będzie pusta, spowoduje dodanie bajtu do wymagań dotyczących pamięci w kolumnie. Doprowadzi to do zwiększenia rozmiaru indeksu, który prawdopodobnie nie jest dobry. To powiedziawszy, jeśli wiele twoich zapytań zostanie zmienionych na "IS NULL" lub "NOT NULL", mogą one być ogólnie szybsze niż porównywanie wartości.
Moje gut nie powiedziałby mi nic, ale jest jedna odpowiedź: test!
-1 To nie odpowiada na pytanie. – user359996
Pytanie brzmiało, czy wskaźnik zwiększy swój rozmiar. Odpowiedź brzmiała, że zwiększyłoby to wielkość indeksu w drugim zdaniu. –
Tytuł * pyta, czy MySQL indeksuje puste kolumny (robi to). Wydaje się, że * description * zadaje nieco inne pytanie, ale tak naprawdę jest tylko wyjaśnieniem, dlaczego pytanie (tytułowe) zostało zadane w pierwszej kolejności. Co więcej, ponieważ ludzie w dużej mierze decydują, czy czytać pytanie na podstawie jego tytułu, powiedziałbym, że tytuł formularza w większości przypadków zastępuje formularz opisu. – user359996
http://dev.mysql.com/doc/refman/5.0/en/is-null-optimization.html
MySQL może wykonywać tę samą optymalizację na COL_NAME IS NULL, że można go używać do COL_NAME = constant_value. Na przykład MySQL może używać indeksów i zakresów do wyszukiwania wartości NULL z IS NULL
Należy pamiętać, że w dokumentacji wymieniono pewne zastrzeżenia, np. "optymalizacja może obsłużyć tylko jedną IS NULL". – Timo
Każdy indeks ma liczność oznacza liczbę różnych wartości są indeksowane. AFAIK nie jest rozsądnym pomysłem, aby powiedzieć, że indeksy powtarzają tę samą wartość dla wielu wierszy, ale indeks będzie odnosił się tylko do powtarzanej wartości do indeksu klastrowanego z wielu wierszy (wiersze z wartością pustą dla tego pola) i zachowując identyfikator odwołania do indeksu klastrowego oznacza: każdy wiersz z polem indeksowanym wartości NULL marnuje rozmiar tak duży jak PK (z tego powodu eksperci zalecają mieć rozsądny PK rozmiar, jeśli masz złożoną PK).
- 1. Czy mysql używa indeksu do sortowania ...
- 2. Czy długość indeksu MySQL w bajtach?
- 3. Czy "soft_delete" Laravel wymaga indeksu na MySQL?
- 4. Git Bash mysql puste
- 5. Konfiguracja indeksu Mysql
- 6. WordPress wp_title puste na stronie indeksu
- 7. accepts_nested_attributes_for zignorować puste wartości
- 8. Czy istnieje optymalna metoda zamawiania indeksu kompozytowego MYSQL?
- 9. pandy zmień wartości indeksu
- 10. Jeśli JSON ma wartości puste
- 11. Wiosna, plik właściwości, puste wartości
- 12. Android Json i wartości puste
- 13. Zachowanie unikalnego indeksu, kolumny varchar i (puste) spacje
- 14. Obejście w mysql dla częściowego indeksu lub przefiltrowanego indeksu?
- 15. Zamień puste ciągi na wartości Brak/puste w DataFrame
- 16. Jak sprawdzić wartości puste/puste/białe za pomocą pojedynczego testu?
- 17. (Dlaczego) Czy MySQL nie może używać indeksu w takich przypadkach?
- 18. Czy możliwe jest posiadanie indeksu opartego na funkcjach w MySQL?
- 19. Jakie jest znaczenie nazwy indeksu podczas tworzenia indeksu w MySQL?
- 20. Zwiększ pojemnik multi-indeksu z indeksu na podstawie wartości zagnieżdżonych
- 21. Umieszczanie indeksu na polu daty w MySQL
- 22. Jak zmienić nazwę indeksu w MySQL
- 23. MySQL. Tworzenie indeksu dla zapytań "OR"
- 24. W jaki sposób string.Format obsługuje wartości puste?
- 25. Czy w MySQL możesz sprawdzić, czy pole ma wartość NULL, czy puste, używając tylko jednego porównania?
- 26. mysql: dlaczego lewe dołączenie nie używa indeksu?
- 27. MySQL Błąd podczas usuwania indeksu (errno 150)
- 28. React.js zdarzenie onClick zwracające wszystkie wartości puste
- 29. PHP - Get wartości tablicy z indeksu liczbowego
- 30. Mysql Wybierz wartości wyliczeniowe
Doskonałe pytanie –