Indeks w bazie danych co to jest i jak działa #62

Поделиться
HTML-код
  • Опубликовано: 2 окт 2024
  • Indeks jest obiektem w bazie danych, który pozwala przyśpieszać wykonywanie zapytań SQL. W tym nagraniu dowiesz się czym jest indeks, do czego służy, jakie są rodzaje indeksów oraz dlaczego indeks nie zawsze jest dobrym rozwiązaniem, czyli wady korzystania z indeksów.
    Obiekty w bazie danych: docs.oracle.co...
    Książka PL/SQL: helion.pl/ksia...
    Zapisy na kurs: www.nieinforma...
    Blog: www.nieinforma...
    Facebook: / nieinformatyk
    Instagram: / nieinformatyk
    Twitter: / nieinformatyk
    Zasubskrybuj mój kanał: www.youtube.co...
    #indeks #optymalizacja #rodzajeindeksów
    Witaj na moim kanale :)
    Jestem programistą baz danych Oracle oraz developerem hurtownii danych (ETL). W tym miejscu dzielę się z oglądającymi wiedzą dotyczącą relacyjnych baz danych, praktycznych technik pisania SQL oraz optymalizacji kodu PL/SQL. Jeśli chcesz zdobyć praktyczną i rzetelną więdzę o bazach danych to trafiłeś na właściwe miejsce.
    Więcej informacji o baza danych znajdziesz zupełnie ZA DARMO na www.nieinforma...

Комментарии • 104

  • @carlm8148
    @carlm8148 3 года назад +33

    Ale kozak i to za darmo taka wiedza. Ma talent do nauczania.

  • @mrgvp
    @mrgvp 3 года назад +2

    Jak można ten filmik minusować... Dzięki za Twoją pracę!

  • @aleksandrazajdel2070
    @aleksandrazajdel2070 3 года назад +17

    Mówiąc szczerze to z Twojego 16 minutowego filmiku wyniosłam zdecydowanie więcej niż z 1.5 h wykładu na studiach. Dzięki wielkie za dzielenie się wiedzą i to w tak umiejętny sposób! :)

  • @zaur66
    @zaur66 2 года назад +1

    Genialne, bardzo dziekuje za film! Zrozumiale dla osoby ktora zaczyna z bazami danych.

    • @nieinformatyk
      @nieinformatyk  2 года назад

      Dziękuje i cieszę się, że pomogłem :)

  • @fatallny
    @fatallny 4 года назад +4

    Cześć Darku, kolejny super odcinek, oby tak dalej :-) Fajnie byłoby zobaczyć tematy które poruszasz w praktyce. Nowe osoby na pewno lepiej zrozumiałyby jak to działa, na przykład pokazać dwa takie same zapytania, jedno z indexami, a drugie bez :-)

    • @nieinformatyk
      @nieinformatyk  4 года назад

      dziękuję za sugestię, postaram się dopracować plan nagrań :)

  • @selfcodegenerator8712
    @selfcodegenerator8712 3 года назад

    Dzieki, za fajne wytłumaczenie tematu indexów, jeden z lepszych kanałów o bazach danych :)

  • @mrkilwag
    @mrkilwag 3 года назад

    kurde gościu, dzięki wielkie, wszystko jasne piknie wytłumaczone!

    • @nieinformatyk
      @nieinformatyk  3 года назад

      proszę bardzo - polecam się na przyszłość :)

  • @adriangoleba9972
    @adriangoleba9972 4 года назад +1

    Cześć Darku, materiał w 100% zrozumiany za co dziękuję!
    Myślę, że mógłbyś nagrać dodatkowy odcinek pokazujący jak w praktyce różnią się zapytania z indeksami i bez.
    Pozdrawiam serdecznie!

    • @nieinformatyk
      @nieinformatyk  4 года назад +1

      Właśnie nagrałem taki odcinek. Ukaże się w kolejnych tygodniach :)

  • @paulinamanda1803
    @paulinamanda1803 4 года назад +1

    Wszystko jasne, dzięki!

  • @MrRodiego
    @MrRodiego 2 года назад

    Świetny odcinek!

  • @specialmusic3498
    @specialmusic3498 3 года назад

    Dziękujemy.

  • @tyszczuczuczuczu8971
    @tyszczuczuczuczu8971 3 года назад +3

    Dlaczego dopiero teraz odkryłam ten kanał.... :c

  • @piotr8909
    @piotr8909 4 года назад +1

    Suuper materiał :) I kiedy można liczyć na kolejny odcinek kursu PL/SQL?

    • @nieinformatyk
      @nieinformatyk  4 года назад +1

      kolejny odcinek PL/SQL to będzie kontynuacja pisania triggera, myślę, że około miesiąc :) Polecam zapisać się na newsletter, bo jeszcze w tym roku pojawi się szansa uczestnictwa w kompleksowym szkoleniu PL/SQL od A od Z: nieinformatyk.pl/

  • @marnow88
    @marnow88 3 года назад

    super odcinek i czekam na kolejny: kiedy i jakiego rodzaju indeksu użyć?

    • @nieinformatyk
      @nieinformatyk  3 года назад

      Zależy o jaki rodzaj pytasz, są b-tree(drzewiaste) i bitmapowe, unikalne i nieunikalne, rosnące i malejące, itd. Podaj konkretny case to powiem Ci co bym wybrał :)

  • @mateuszkaleta1495
    @mateuszkaleta1495 3 года назад

    super materiał ;p

  • @maciekssj
    @maciekssj 4 года назад +2

    Chętnie zobaczyłbym porównanie na żywym przykładzie jak dużo czasu można zyskać tworząc indeksy.
    Na przykład bez indeksów wykonuje się 3 sekundy, z indeksami 1
    Również statystyka w postaci konkretnych danych o ile operacje DML zostają spowolnione

    • @nieinformatyk
      @nieinformatyk  4 года назад

      dziękuję za sugestię, postaram się coś wymyślić :)

    • @michal5869
      @michal5869 4 года назад

      @@nieinformatyk jak wyrzucisz coś z indeksu to DB musi zrobić ponowne sortowanie? a jak tak to czy może przenieść tylko z końca jakiś element indeksu dla przyspieszenia?

    • @nieinformatyk
      @nieinformatyk  4 года назад

      @@michal5869 tak, proces aktualizacji indeksu to tzw. rebuild - dlatego DML na tabeli jest wolniejszy, bo indeks trzeba aktualizować.
      Nie rozumiem drugiego pytania :)

    • @michal5869
      @michal5869 4 года назад

      @@nieinformatyk chodzi mi o sortowanie, czy db może kasowany wiersz indeksu zastąpić innym istniejącym aby nie uniknąć sortowania.

    • @nieinformatyk
      @nieinformatyk  4 года назад

      @@michal5869 Indeks w standardowej postaci B-Tree zawiera 2 kolumny(oczywiście nie dosłownie). Jest to klucz indeksu, czyli indeksowana wartość oraz ROWID - identyfikator rekordu z daną wartością klucza.
      Jeśli modyfikujesz klucz indeksu, np. zmieniasz wartość z 5 na 10, X na Y to indeks musi zostać posortowany. Jeśli z kolei zmieniasz inną kolumnę w rekordzie tabeli(nieindeksowaną) to indeksu nie trzeba aktualizować, bo wartość klucza i ROWID się nie zmieniła.
      Tak samo, gdy usuwasz rekord z tabeli to indeks musi zostać posortowany, bo przecież trzeba ze struktury indeksu usunąć jeden z kluczy. Jak chciałbyś zastąpić jeden wiersz drugim?

  • @mateuszszczuka2311
    @mateuszszczuka2311 4 года назад +3

    Robisz bardzo fajną robotę, oby tak dalej 🙂

  • @Lucky-ec8xo
    @Lucky-ec8xo День назад

  • @NecesitoLaMusica
    @NecesitoLaMusica 4 года назад +1

    Wiedziałam o zaletach, ale nigdy nie pomyślałam o tym, że może spowolnić modyfikacje zawartości tabeli. Dzięki!

  • @pietrzakadrian
    @pietrzakadrian 3 года назад +3

    Dzięki za uzupełnienie materiału!

  • @XivaGamer
    @XivaGamer 3 года назад

    a co jezeli damy limit 1? wtedy full scan chyba sie przerwie prawda/?

  • @brarord8401
    @brarord8401 Год назад

    12:00 - czy na pewno w tym przypadku operacja DELETE będzie wolniejsza dla tabeli z indeksem unikalnym na polu ID?
    Przecież dzięki indeksowi polecenie DELETE WHERE ID w momencie znalezienia określonego ID usunie ten rekord i już nie będzie szukać kolejnych rekordów bo wie że ID jest unikalne. Usunie też rekord w indeksie. Jeżeli szukane ID znajduje się na pierwszym miejscu w indeksie to baza wykona tylko 2 operacje: kasacja rekordu z tabeli i z indeksu.
    W przypadku braku posiadania indeksu na kolumnie ID polecenie DELETE WHERE ID usunie 1 rekord jeżeli znajdzie odpowiednie ID i będzie przeszukiwać dalej całą tabelę, bo nie wie czy gdzieś jeszcze takiego ID nie ma. Więc liczba operacji wykonanych na bazie może być tutaj ogromna, bo pomimo tego że wiemy iż jest tylko 1 takie ID do usunięcia to będziemy musieli przeszukać całą tabelę. W przypadku posiadania indeksu unikalnego zaprzestaniemy po pierwszej udanej próbie.

    • @nieinformatyk
      @nieinformatyk  Год назад

      Świetna uwaga :) Wolniejsza będzie w tym sensie, że zamiast robić DELET-e na tabeli musisz robić DELETE na tabeli i DELETE na indeksie. Oczywiście, jeśli tabela będzie odpowiednio duża to czas FULL TABLE SCAN może być dużo dłuższy niż 2 DELETE z indeksem unikalnym. Wtedy mamy do czynienia z wyjątkiem potwierdzającym regułę ;)
      PS. Przyszła mi do głowy jeszcze jedna rzecz, którą należałoby sprawdzić. DELETE usuwa najpierw rekord z tabeli czy z indeksu? Bo jeśli indeks jest pierwszy to na tabeli i tak poleci FULL TABLE SCAN.

    • @brarord8401
      @brarord8401 Год назад

      @@nieinformatyk Propo PS to chyba powinien skasować najpierw z tabeli zgodnie z jakąś podstawową logiką zysków i strat. A czy tak jest to w sumie cholera wie Oo
      Jeżeli i tak i tak skanuje całą tabelę to trochę niefajne te indeksy w operacjach modyfikacji wartości unikalnych.

  • @kubamosakowski7350
    @kubamosakowski7350 Год назад

    👍👍

  • @rufusr5880
    @rufusr5880 7 месяцев назад

    Mi tylko brakuje jakiegos praktycznego przykładu :)

    • @nieinformatyk
      @nieinformatyk  7 месяцев назад +1

      Zerknij na pozostałe odcinki tej playlisty - znajdziesz tam niejeden przykład :) ruclips.net/video/wrgKifVK0wg/видео.html

    • @rufusr5880
      @rufusr5880 7 месяцев назад

      @@nieinformatyk jasne, zerkne po pracy

  • @nataliej.6110
    @nataliej.6110 10 месяцев назад

    Nasz prowadzący chyba próbował inspirować się Twoim filmem na laboratorium, ale niestety zrobił to baaardzo nieumiejętnie i strasznie to skomplikował tak, że było to zupełnie niezrozumiałe. Cieszę się, że trafiłam na ten kanał. Dzięki wielkie!

    • @nieinformatyk
      @nieinformatyk  10 месяцев назад +1

      Cieszę się, że mogłem pomóc :)

  • @pawewiatrak5684
    @pawewiatrak5684 Год назад

    Bardzo mi się podoba, że dajesz hasła jakich należy szukać żeby poszerzyć swoją wiedzę na dane zagadnienie. Dzięki czemu mogłem przenieść całą koncepcję na bazę danych smssql :) Dzięki!!

    • @nieinformatyk
      @nieinformatyk  Год назад +1

      Jeśli szukałeś ścieżek dostępu to te nagranie może Ci się spodobać: ruclips.net/video/Pz9vFdnSsKk/видео.html

  • @filemonek123
    @filemonek123 3 года назад

    W mowie koncowej moglbys zawrzec odnosniki do swoich nagran w ktorych omawiasz wspominane zagadanienia. CZyli jak mowisz, ze cos tam bedzie pozniej bo jest zaawansowane to fajnie jakby w rogu ekranu pojawil sie link do twojego nagrania z tym, bo tak to trzeba szukac a uzytkownicy kaprysni sa

    • @nieinformatyk
      @nieinformatyk  3 года назад

      Tu problem jest taki, że trudno spamiętać, o czym mówiłem w każdym z poprzednich nagrań i do czego odsyłałem. Ale dzięki za feedback, pomyśle jak to rozwiązać.

  • @kamilnowak5
    @kamilnowak5 3 года назад +1

    Opisane elagancko :)

  • @JanKowalski-ld4ec
    @JanKowalski-ld4ec 10 месяцев назад

    Bardzo klarownie przedstawione tematy. Przyjemnie się ogląda tak profesjonalny poziom wiedzy i tak pozbawione maniery nauczanie. Prosty flipchart zamiast wodotrysków wystarczy jak widać. Serdeczne dzięki. Powodzenia i Tobie!

    • @nieinformatyk
      @nieinformatyk  10 месяцев назад

      dzięki :)

    • @JanKowalski-ld4ec
      @JanKowalski-ld4ec 10 месяцев назад

      @@nieinformatyk Jeszcze tylko ten greenscreen zostawia artefakty ;)

  • @Tomekrusz
    @Tomekrusz 3 года назад

    Super materiał wszystko czarno na białym wyjaśnione, bardzo dziękuję za pomoc. :)

    • @nieinformatyk
      @nieinformatyk  3 года назад

      Bardzo się cieszę, że materiał się przydał :)

  • @megabroku4592
    @megabroku4592 Год назад

    fajny talent artystyczny

  • @ViolettaBasczok
    @ViolettaBasczok 7 месяцев назад

    Bardzo pomocny filmik, dziękuję :)

    • @nieinformatyk
      @nieinformatyk  7 месяцев назад

      Cieszę się, że przypadł Ci do gustu:)

  • @sebon11
    @sebon11 Год назад

    Siemano, odcinek jest świetny jak zawsze na Twoim kanale! Zabrakło mi jednak praktyki oraz dokładnego omówienia - kiedy dokładnie tworzyć indeksy? To zależy od tego jakie mamy dane w tabeli, czy co? Kiedy zrobić indeks złożony(?) a kiedy na jednej kolumnie? Chociaż wspomniałeś że to będzie w następnych odcinkach, więc spoko, a ten wstęp który zrobiłeś jest jak najbardziej świetny i potrzebny, po prostu mówię że czekamy na więcej :D (chyba że już jest, zaraz spojrzę xddd)

    • @nieinformatyk
      @nieinformatyk  Год назад +1

      Obejrzyj ten odcinek i 2 kolejne z playlisty: ruclips.net/video/U0Gxv9GU46o/видео.html
      Trudno zebrać to wszystko w jeden odcinek. Nie chcę by video trwało ponad 20 minut więc dzielę to na pojedyncze tematy. A kwestia, gdzie i jaki indeks tworzyć to w skrócie: klucze główne i klucze obce. A reszta wymaga trochę więcej do opowiedzenia. Nagram kiedyś kurs optymalizacji SQL to poświęcimy temu zagadnieniu cały kilkugodzinny moduł :)

    • @sebon11
      @sebon11 Год назад

      @@nieinformatyk super! Czekam właśnie na zagadnienia dotyczące optymalizacji zapytań SQL i wgl projektowania bazy danych bo to ciekawy i ważny temat :) dzięki! Pozdro!

    • @nieinformatyk
      @nieinformatyk  Год назад

      @@sebon11 o projektowaniu znajdziesz co nie co tutaj: ruclips.net/video/7zWS_hczS5c/видео.html no i oczywiście w kursie www.podstawybazdanych.pl

  • @esponplaygames
    @esponplaygames 3 года назад

    może coś o rodzajach indeksów?

    • @nieinformatyk
      @nieinformatyk  3 года назад +1

      dodałem do listy, która co raz szybciej się wydłuża :D

    • @nieinformatyk
      @nieinformatyk  Год назад

      Właśnie nagrałem materiał o który prosiłeś. Daj znać czy Ci się podoba🙂 ruclips.net/video/MEl3uBPTjJk/видео.html

  • @katarzynaniebrzydowska7317
    @katarzynaniebrzydowska7317 2 года назад

    Dzień dobry, co się dzieje z indeksami na tabeli przy próbie usunięcia tabeli SQL?

    • @nieinformatyk
      @nieinformatyk  2 года назад +1

      indeksy podobnie jak constrainty czy triggery są usuwane razem z tabelą

    • @katarzynaniebrzydowska7317
      @katarzynaniebrzydowska7317 2 года назад +1

      @@nieinformatyk Bardzo Panu dziekuje za odp i czekam na kolejne odcinki !

    • @nieinformatyk
      @nieinformatyk  2 года назад

      @@katarzynaniebrzydowska7317 chwilowo zwolniłem, bo przygotowuję kurs programowania PL/SQL, ale wkrótce wracam z nowymi :)

  • @robderrt
    @robderrt 5 месяцев назад

    Dobrze wytłumaczone.

  • @tomaszmroczka5839
    @tomaszmroczka5839 Год назад

    jestes gitem, szacun i dziekuje

  • @MeggaFelipe
    @MeggaFelipe Год назад

    #zasieg2

  • @pawelkubrak547
    @pawelkubrak547 4 года назад

    good film. record more.

    • @nieinformatyk
      @nieinformatyk  4 года назад

      thank you :) come back every Saturday :)

  • @marcin2475
    @marcin2475 2 года назад

    Świetny materiał! Dzięki!

  • @ZenonMcRae
    @ZenonMcRae 2 года назад

    Dla zasięgu!

  • @damiankrasniewski4946
    @damiankrasniewski4946 4 года назад

    Komentarz dla statystyk

  • @MeggaFelipe
    @MeggaFelipe 3 года назад

    #zasieg

  • @Solban_
    @Solban_ 3 года назад

    Samy Kamkar lepszy

    • @Solban_
      @Solban_ 3 года назад

      Ale i tak fajnie bo Samy Kamkar to największy koks

  • @kol19pl
    @kol19pl 4 года назад

    niestety nie pomocne przy tym czego szukam

  • @RegalWK
    @RegalWK Год назад

    a jak tworzymy tabele i szukamy po id, które jest kluczem głównym to chyba nie robi się full table scan, bo to pod spodem jest tworzony uniq indeks do tego?

    • @nieinformatyk
      @nieinformatyk  Год назад +1

      To prawda. Jak tworzysz PK(klucz główny) to automatycznie jest tworzony indeks(zazwyczaj unikalny) i wtedy zapytanie WHERE id=1 oczywiście wykorzysta indeks. Jeśli jednak w SELEC-ie odniesiesz się do kolumny, które w indeksie nie ma, np. nazwa_produktu to po przeczytaniu indeksu baza uda się do tabeli(table access by ROWID).