Czy istnieje powód, aby używać indeksu do bardzo małych tabel (do 1000 wierszy)?

9

Podczas tworzenia aplikacji mam wiele tabel, które przechowują „małą” ilość danych (zwykle 10-40 wartości, id+ valuei czasami type), które przechowują atrybuty „obiektów”, takich jak świeże / zgniłe, czerwone / zielone / niebieskie dla produktów.

Nie umieszczam tych atrybutów w tabeli produktów, ponieważ elementy elektroniczne nie mogą być świeże, a gazowy tlen nie może być czerwony, a tabele nie mogą mieć nieograniczonej liczby wierszy ...

Do przechowywania atrybutów używam niestandardowych małych tabel, gdzie 2-3 pola: iddo łączenia, namedo wyświetlania w aplikacji i czasami, typejeśli grupy atrybutów w tej samej kategorii.

Podstawowe „obiekty” są powiązane z atrybutami poprzez pośrednie tabele wiele do wielu.

Czy jest jakiś powód do tworzenia i utrzymywania indeksów dla tych „małych słowników” zawierających mniej niż 1000 pozycji (zwykle 10–40)?

Moja docelowa baza danych to Oracle, ale mam nadzieję, że odpowiedź niezależna od dostawcy ...

Wypełniam - nie, ale nie mam umiejętności technicznych uzasadniających moje wypełnienie ...

gavenkoa
źródło

Odpowiedzi:

14

Ogólnie tak. W przypadku braku indeksu wzorzec dostępu musi sprawdzać każdy wiersz, aby sprawdzić, czy jest to ten, którego potrzebujesz. Problemem nie jest rozmiar tabeli, ale współbieżność. W zależności od poziomu izolacji skany mogą blokować niezatwierdzoną transakcję, aby poczekać na odblokowanie wierszy, które ostatecznie są „nieciekawe”. Ponieważ masz gwarancję, że twój skan „spojrzy” na każdy wiersz, każdy skan będzie blokował każdy zapis (wstawianie, usuwanie lub aktualizowanie). Oracle domyślnie izoluje migawkę, co jest w tej sytuacji OK (bez blokowania), ale inni dostawcy domyślnie używają czegoś innego, np. SQL Server będzie domyślnie Czytaj popełnione który robi blok.

Przy obecnym indeksie wzorzec dostępu będzie patrzył tylko na odpowiednie wiersze (w żądanym zakresie kluczy), więc czysta statystyczna szansa na trafienie w konflikt blokady jest znacznie zmniejszona.

Remus Rusanu
źródło
Dzięki za wyjaśnienie, mam pytanie uzupełniające (mimo że teraz jest 3 lata później). Co powiesz na bardzo małe stoły z maksymalnie 3 lub 4 rzędami?
Rob
Małe stoliki z certyfikatem (mieszczące się na 1-2 stronach) najprawdopodobniej zostaną zeskanowane
Remus Rusanu
@Remus wymagany do utworzenia indeksu na MySQL
Singh Kailash