Jak działa WITH w SQL, czyli co to jest Common Table Expression (CTE)?

  Рет қаралды 4,854

nieinformatyk

nieinformatyk

Күн бұрын

Пікірлер: 33
@mpo14-t2y
@mpo14-t2y Жыл бұрын
Fajny kanał, dopiero zaczynam przygodę z twoim kanałem, ale chętnie pooglądam filmy :) życzę dalszego rozwoju! :)
@nieinformatyk
@nieinformatyk Жыл бұрын
Dzięki, zapraszam do wspólnej nauki:)
@martinnereg6769
@martinnereg6769 Жыл бұрын
Serwus Darek, w końcu znalazłem czas, aby obejrzeć Twoją lekcję. Cały czas miałem ją na liście otwartej z moim zadaniami. Teraz rozumiem czym jest CTE i powinienem go kojarzysz przede wszystkim z operacjami w hurtowniach danych. Uważam że lekcja bardzo interesująca tymbardziej, że w Internecie trudno znaleźć tak dobrze "spakowane" informacje o CTE. Pozdrawiam.
@nieinformatyk
@nieinformatyk Жыл бұрын
Dzięki Martin :)
@martinnereg6769
@martinnereg6769 Жыл бұрын
@@nieinformatyk Darek a czy nagrywałeś może lekcję o instrukcji MERGE? Dzięki za Twój czas.
@nieinformatyk
@nieinformatyk Жыл бұрын
@@martinnereg6769 Nie, jeszcze nie nagrywałem. Znajdzie się na pewno w kursie SQL: promo.mistrzsql.pl/
@MsMalcolmX
@MsMalcolmX Жыл бұрын
Jak zwykle materiał na najwyższym poziomie :) Pozdrawiam ;)
@nieinformatyk
@nieinformatyk Жыл бұрын
dzięki Bartosz :)
@dariuszmion2764
@dariuszmion2764 Жыл бұрын
W kwestii Common Table Expression (CTE) przydało by się rozszerzenie materiału o zapytania rekurencyjne "WITH RECURSIVE" 😉
@nieinformatyk
@nieinformatyk Жыл бұрын
Będę to dokładnie omawiał w kursie SQL: promo.mistrzsql.pl/ Porównamy też sobie RECURSIVE CTE z CONNECT BY w Oracle :)
@dariuszmion2764
@dariuszmion2764 Жыл бұрын
@@nieinformatyk Nie Pomijaj też MySQL i MariaDB jako bardzo popularnych silników bazodanowych ;)
@nieinformatyk
@nieinformatyk Жыл бұрын
@@dariuszmion2764 w kursie omawiam każde zagadnienie na przykładzie Oracle, Sql Server i Postgres. Rozszerzanie tego na kilka kolejnych silników wydłużałoby jeszcze bardziej kurs, a tego chciałem uniknąć.
@kate_z317
@kate_z317 Жыл бұрын
Dziękuję za ten film! :)
@nieinformatyk
@nieinformatyk Жыл бұрын
proszę bardzo :)
@Siejec
@Siejec Жыл бұрын
Super filmik! Naturalny bez fakeowych reakcji. 7:00 to dokładnie twarz jaką ja robię kiedy kwerenda nie działa jak byłem pewien, że powinna zadziałać
@nieinformatyk
@nieinformatyk Жыл бұрын
Haha, staram się przygotowywać do nagrań, ale nie zawsze wychodzi idealnie w 100%:)
@KRusin-po8mu
@KRusin-po8mu 11 ай бұрын
Hej, dziękuję, film mega przydatny. Czy planujesz jeszcze rozwinąć temat struktur drzewiastych? (Connect by prior) :)
@nieinformatyk
@nieinformatyk 11 ай бұрын
W najbliższym czasie na YT raczej nie, bo mam już przygotowanych kilka tematów na kolejne materiały. W kursie SQL promo.mistrzsql.pl/ będzie ten temat kompleksowo poruszony: CONNECT BY (NOCYCLE), START WITH, ORDER BY SIBLINGS, LEVEL, CONNECT_BY_ISCYCLE, CONNECT BY_ISLEAF, PRIOR, CONNEC_BY_ROOT oraz SYS_CONNECT_BY_PATH. Porównamy też sobie te Oraclowe rozwiązanie z RECURSIVE CTE :)
@Tylywizor
@Tylywizor Жыл бұрын
Temat na czasie dla mnie, dzisiaj przerobiłem zapytanie z CTE na tabelki tymczasowe #. Czas z 2 minut zszedł do 1 sec :D Nie wiem jakim cudem bo zapytanie nie było jakies skomplikowane.
@nieinformatyk
@nieinformatyk Жыл бұрын
Brawo :)
@markippo
@markippo Жыл бұрын
Myślę, że ta ciągła popularność cte w Oracle jest efektem problematycznej implementacji tabel tymczasowych. Nie używałem już Oracle/pl/sqla od dłuższego czasu, ale w 11g tymczasówki były fatalne i dalekie od into #tabelka. W sql server cte można spotkać bardzo rzadko albo jako efekt zaprzeszłości, wzięcia czegoś pierwszego lepszego lub bardzo specjalistycznych zastosowań. Sam korzystam z nich do prostej deduplilacji - w myśl zasady relacyjnej "modifikacja obiektu abstrakcyjnego, zmienia obiekt fizyczny", widziałem też bardziej analityczne zastosowania rekurencyjne, gdzie cte odwołuje się do cte. W bazach data warehouse być może zastosowanie dla cte jest większe, ale ich użycie jest zwykle bardzo problematyczne i dość niewydajne. Problemem jest jak zwykle ram, którego w HD jest zawsze za mało, a nierozważne użycie cte tylko ten problem potęguje. No i całość jest doraźna - każdorazowo zapytanie musi zostać wykonane, co przy pracach rozwojowych jest... Utrudnieniem... W zastosowaniach analitycznych unikałbym cte jak ognia, lepiej już tworzyć stałe, techniczne tabele, które po zakończeniu zostaną zdropowane. Większe zapytania wyraźnie korzystają na atomizacji, gdzie każde kolejne kroki są stosunkowo niespomplikowane, nie posiadają ani podzapytań (zwłaszcza w Select) , ani cte - korzystają z kroków poprzedzających. Uważam, że bazy Oracle bardziej nadają się do HD, pl/sql też jest dalece bardziej rozbudowany od t-sqla, ale nie rozumiem, dlaczego Oracle pokpiło tak te tymczasówki - to bardzo wygodne rozwiązanie.
@nieinformatyk
@nieinformatyk Жыл бұрын
Ja mam dobre doświadczenie z CTE w hurtowni, świetnie sobie radził i do tego upraszczał czytelność :) Trzeba było tylko uważać by nie nadużywać HINT-a MATERIALIZE bo łatwo zapchać pamięć, szczególnie, gdy zapisujemy w liście SELECT więcej kolumn niż de facto jest potrzebne.
@filipgrydz
@filipgrydz Жыл бұрын
#zasieg CTE spoko, ale nerwy zawsze mam jak cos zakomentuje w kodzie żeby je pościć a później tego szukam w 300 linijkach.
@nieinformatyk
@nieinformatyk Жыл бұрын
Bywa upierdliwe. Dobrze dlatego nie przesadzać z tym cte i używać widoków i tabel zmaterializowanych. Kod robi się od razu krótszy.
@TomaszTomzik
@TomaszTomzik Жыл бұрын
A wg mnie hint "materialize" powinien być domyślny w with. Co do pierwszej wady to się nie zgodzę, trudno uznać za wadę złe użycie danego rozwiązania... Generalnie wady trochę wyciągnięte na siłę ;)
@nieinformatyk
@nieinformatyk Жыл бұрын
Dzięki za opinię Tomasz :) Moim zdaniem WITH służy do tworzenia logicznych bloków zapytań, które zapisane jako jeden SELECT są nieczytelne. Jeśli z kolei używamy WITH-a do prostego SELECT * FROM tabela to uzyskujemy efekt dokładnie odwrotny - zwiększamy niepotrzebnie ilość linii kodu i sprawiamy, że ktoś inny może się doszukiwać drugiego dna tego rowiązania -> "hm.. po co ktoś tu robił witha? Chodzi o plan zapytania? pewnie umie zrobić łączenie po kilku kolumnach więc po coś to jest " Ja przynajmniej miałbym takie rozkminy :) To trochę jakbyś użył funkcji analitycznej zamiast standardowego grupowania - tylko dlatego, że jest trendy i każdy pisze, że to zaawansowany SQL.
@nieinformatyk
@nieinformatyk Жыл бұрын
A co do materialize? Czemu tak uważasz? Jeśli ktoś do podzapytania z WITH-a będzie odnosił się tylko raz w SELEC-ie to na moje oko ten hint bardziej zaszkodzi, bo będzie narzut czasu na niepotrzebne tworzenie segmentu tymczasowego z danymi. Wtedy trzeba by pisać NOMATERIALIZE :)
@TomaszTomzik
@TomaszTomzik Жыл бұрын
@@nieinformatyk Materlizowanie czasami działa szybciej nawet jak się odwołujesz raz... na to wskazuje moje doświadczenie, ale nie dam sobie ręku uciąć.
@maciejszypula
@maciejszypula Жыл бұрын
Szacun za Kimballa na półce :)
@nieinformatyk
@nieinformatyk Жыл бұрын
Dobra ksiazka:)
@DenizDemir-wz5vq
@DenizDemir-wz5vq Жыл бұрын
#zasieg
@therewereattempts
@therewereattempts 25 күн бұрын
dla mnie podzapytania >>> CTE
@nieinformatyk
@nieinformatyk 24 күн бұрын
Dzięki za podzielenie się opinią :)
Poziomy izolacji sql - wyjaśnienie dla laika + przykłady
27:36
nieinformatyk
Рет қаралды 4,5 М.
Co to jest i jak działa kursor w bazie danych?
25:58
nieinformatyk
Рет қаралды 10 М.
Don’t Choose The Wrong Box 😱
00:41
Topper Guild
Рет қаралды 62 МЛН
Мен атып көрмегенмін ! | Qalam | 5 серия
25:41
To Brawl AND BEYOND!
00:51
Brawl Stars
Рет қаралды 17 МЛН
SQL WITH Statements (Common Table Expressions - CTE)
5:40
Becoming a Data Scientist
Рет қаралды 101 М.
Normalizacja Baz Danych Dla Początkujących + Praktyka
21:08
nieinformatyk
Рет қаралды 18 М.
Transakcja sql - to co jest i jak działa w bazie danych?
18:47
nieinformatyk
Рет қаралды 12 М.
Pytania rekrutacyjne SQL(podchwytliwe) + odpowiedzi
15:44
nieinformatyk
Рет қаралды 1,7 М.
Indeks w bazie danych   co to jest i jak działa #62
16:35
nieinformatyk
Рет қаралды 28 М.
Learn Database Normalization - 1NF, 2NF, 3NF, 4NF, 5NF
28:34
Decomplexify
Рет қаралды 2,2 МЛН
Don’t Choose The Wrong Box 😱
00:41
Topper Guild
Рет қаралды 62 МЛН