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! :)
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!
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!
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 :-)
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!!
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!
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)
Obejrzyj ten odcinek i 2 kolejne z playlisty: th-cam.com/video/U0Gxv9GU46o/w-d-xo.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ł :)
@@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!
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.
Ś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.
@@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.
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ł :)
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/
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
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ć.
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 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?
@@michal5869 tak, proces aktualizacji indeksu to tzw. rebuild - dlatego DML na tabeli jest wolniejszy, bo indeks trzeba aktualizować. Nie rozumiem drugiego pytania :)
@@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?
Ale kozak i to za darmo taka wiedza. Ma talent do nauczania.
dziękuję za feedback :)
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! :)
Super :) Cieszę się, że pomogłem :)
Drberg się znalazł
Dzięki za uzupełnienie materiału!
Polecam się na przyszłość :)
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!
dzięki :)
@@nieinformatyk Jeszcze tylko ten greenscreen zostawia artefakty ;)
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!
Cieszę się, że mogłem pomóc :)
Genialne, bardzo dziekuje za film! Zrozumiale dla osoby ktora zaczyna z bazami danych.
Dziękuje i cieszę się, że pomogłem :)
Jak można ten filmik minusować... Dzięki za Twoją pracę!
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 :-)
dziękuję za sugestię, postaram się dopracować plan nagrań :)
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!!
Jeśli szukałeś ścieżek dostępu to te nagranie może Ci się spodobać: th-cam.com/video/Pz9vFdnSsKk/w-d-xo.html
Dzieki, za fajne wytłumaczenie tematu indexów, jeden z lepszych kanałów o bazach danych :)
Cieszę się, ze pomogłem :)
Super materiał wszystko czarno na białym wyjaśnione, bardzo dziękuję za pomoc. :)
Bardzo się cieszę, że materiał się przydał :)
Dobrze wytłumaczone.
Dzięki ;)
kurde gościu, dzięki wielkie, wszystko jasne piknie wytłumaczone!
proszę bardzo - polecam się na przyszłość :)
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!
Właśnie nagrałem taki odcinek. Ukaże się w kolejnych tygodniach :)
Robisz bardzo fajną robotę, oby tak dalej 🙂
dziękuję za komentarz :)
Wiedziałam o zaletach, ale nigdy nie pomyślałam o tym, że może spowolnić modyfikacje zawartości tabeli. Dzięki!
Polecam się na przyszłość :)
Bardzo pomocny filmik, dziękuję :)
Cieszę się, że przypadł Ci do gustu:)
jestes gitem, szacun i dziekuje
dzięki :)
Dla zasięgu!
dzięki :)
Wszystko jasne, dzięki!
super, dziękuję za komentarz :)
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)
Obejrzyj ten odcinek i 2 kolejne z playlisty: th-cam.com/video/U0Gxv9GU46o/w-d-xo.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ł :)
@@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!
@@sebon11 o projektowaniu znajdziesz co nie co tutaj: th-cam.com/video/7zWS_hczS5c/w-d-xo.html no i oczywiście w kursie www.podstawybazdanych.pl
Opisane elagancko :)
dzięki :)
Świetny materiał! Dzięki!
Polecam się na przyszłość :)
Dziękujemy.
proszę bardzo :)
Świetny odcinek!
dzięki :)
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.
Ś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.
@@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.
super odcinek i czekam na kolejny: kiedy i jakiego rodzaju indeksu użyć?
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ł :)
Suuper materiał :) I kiedy można liczyć na kolejny odcinek kursu PL/SQL?
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/
fajny talent artystyczny
haha, dzięki :)
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
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ć.
super materiał ;p
dzięki :)
Dlaczego dopiero teraz odkryłam ten kanał.... :c
a co jezeli damy limit 1? wtedy full scan chyba sie przerwie prawda/?
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
dziękuję za sugestię, postaram się coś wymyślić :)
@@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?
@@michal5869 tak, proces aktualizacji indeksu to tzw. rebuild - dlatego DML na tabeli jest wolniejszy, bo indeks trzeba aktualizować.
Nie rozumiem drugiego pytania :)
@@nieinformatyk chodzi mi o sortowanie, czy db może kasowany wiersz indeksu zastąpić innym istniejącym aby nie uniknąć sortowania.
@@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?
Dzień dobry, co się dzieje z indeksami na tabeli przy próbie usunięcia tabeli SQL?
indeksy podobnie jak constrainty czy triggery są usuwane razem z tabelą
@@nieinformatyk Bardzo Panu dziekuje za odp i czekam na kolejne odcinki !
@@katarzynaniebrzydowska7317 chwilowo zwolniłem, bo przygotowuję kurs programowania PL/SQL, ale wkrótce wracam z nowymi :)
👍👍
Dziełks bq!
może coś o rodzajach indeksów?
dodałem do listy, która co raz szybciej się wydłuża :D
Właśnie nagrałem materiał o który prosiłeś. Daj znać czy Ci się podoba🙂 th-cam.com/video/MEl3uBPTjJk/w-d-xo.html
#zasieg
dzięki :)
good film. record more.
thank you :) come back every Saturday :)
#zasieg2
Super, zresztą jak zawsze.
@@filipgrydz dzieki:)
Mi tylko brakuje jakiegos praktycznego przykładu :)
Zerknij na pozostałe odcinki tej playlisty - znajdziesz tam niejeden przykład :) th-cam.com/video/wrgKifVK0wg/w-d-xo.html
@@nieinformatyk jasne, zerkne po pracy
Komentarz dla statystyk
dzięki :)
Samy Kamkar lepszy
Ale i tak fajnie bo Samy Kamkar to największy koks
niestety nie pomocne przy tym czego szukam
A czego szukałeś?