Czy w tym przypadku warto tworzyć index?

0

Indeksy mają zalety (przyspieszają SELECT) i wady (spowalniają INSERT,zajmują miejsce). W sytuacji, kiedy na danej kolumnie wykonujemy operację SELECT dużo częściej, niż INSERT, wybór wydaje się oczywisty. Co jednak, gdy zawsze, bądź prawie Xzawsze po SELECT następuje INSERT? Czy korzyści płynące z szybszego przeszukiwania indeksowanej kolumny nie zostaną zmarnowane przez konieczność każdorazowego odtwarzania indeksu?

0

Kiedyś robiłem test na moim kompie na tabeli z ok 1 mln rekordów i pięcioma indeksami.
Select 5 wierszy z waruknkiem 'where ...' bez indeksów wykonywał się ok 150 ms , z indeksem poniżej 1 ms
Natomiast Insert bez indeksów - poniżej 1 ms , z indeksami 5-6 ms , a więc w testowanym przypadku warto stosować indeksy.
Silnik bazy to Firebird 2.5.4

1

Zależy od rodzaju użytego indeksu. Jednak co do zasady indeksy "robią dobrze" na tyle, że opóźnienia przy insertach są nieistotne.

0

Zależy ile masz danych i jaki to select, jaki indeks i jak bardzo przyspiesza ten select. Jeśli danych jest bardzo dużo, to będzie to działać na korzyść indeksu, bo indeksy często zmieniają złożoność wyszukiwania i np. z liniowej robią logarytmiczną lub stałą. Z drugiej strony narzut przy modyfikacjach jest stały, choć może też być znaczny i np. spowolnić insert kilkukrotnie, bo wymaga dodatkowego odczytu, dodatkowej synchronizacji, uderza w dysk w losowe miejsce itp. Ale raczej będzie mieć to znaczenie przy proporcjach 10000 insertów na jeden select, a nie 1:1.

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