#bazydanych #sql
Jak powinien wyglądać prosty projekt tabeli "firma" gdzie znajdują się informacje typu regon, nip, adres, tel, itp. Dokładnie chodzi mi o to czy kluczem głównym powinien być regon, skoro jest unikatowy, czy lepiej (dlaczego) aby kluczem głównym był unikatowy numer. Jaka jest dobra praktyka ? :)
  • 24
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@leszekwl: w której części się nie zgadzasz?
Jeśli chodzi o UUID to ma to sens jeśli nie chcesz doprowadzić do wycieku infirmacji biznesowej np. o ilości zarejestrowanych firm, klientów, złożonych zamówień itd. Jeśli użyjesz inta jako klucza, do tego z opcją autoincrement (no bo czemu nie), a jakiś popularny framework do RESTa automatycznie Ci to wystawi na frontend to podajesz na tacy tzw. business velocity.
Wystarczy obserwować szybkość przyrostu identyfikatora.
  • Odpowiedz
Oracle 12.1c

1. Czy dodanie warunku WHERE ROWNUM <= 1 powoduje wykonanie zapytania w całości (tak jakby warunku nie było) ale finalnie zwraca tylko jeden rekord czy może zapytanie wykonuje się szybciej bo kończy po odnalezieniu pierwszego wyniku?

2. Czy podzapytanie wewnątrz WHERE EXISTS() wykonuje się w całości zanim funkcja zwróci TRUE (zakładamy że coś by znalazło) czy może odnajduje pierwszy lepszy rekord, kończy wykonywanie podzapytania i zwraca TRUE?

#oracle
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@AIRjordan @TomaszWKS Polecam zgłębić informacje o pseudokolumnie rownum https://blogs.oracle.com/oraclemagazine/on-rownum-and-limiting-results i czym jest koszt zapytania https://stackoverflow.com/questions/860450/understanding-the-results-of-execute-explain-plan-in-oracle-sql-developer
Nie jestem specem ale w Twoim przypadku (nie wiem jak wygląda całe zapytanie, które wykonujesz, jaka jest struktura tabel, indeksów, wolumen i rozmieszczenie danych) optymalizator kosztowy po prostu znalazł sobie plan do wykonania Twojego zapytania, który przy dodaniu warunku na rownum <= 1 ma mniej bloków do odczytu stąd koszt zapytania mniejszy. Nie widzę tu
  • Odpowiedz
Potrzebuje podszkolić się z tematu #sql - polecacie jakieś książki, kursy czy lepiej to co jest w necie? Może znacie jakąś fajną stronę z ćwiczeniami? #bazydanych

Będę wdzięczny za porady. ( ͡º ͜ʖ͡º)
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mam taki problem. W dużym uproszczeniu Tabela A jest pewnym słownikiem zawierającym unikalne rekordy, jest ich powiedzmy 2-3 tysiące. Tabela B zawiera ~9 mln unikalnych rekordów, a tabela C, (a w zasadzie jest to parę powiązanych tabel) wiąże typy słownikowe z tabeli A z tabelą B i przechowuje wartości tych słowników dla rekordów z tabeli B. Każdy rekord z tabeli B może być powiązany z zero lub wieloma rekordami z tabeli A
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@aaandrzeeey: C to jest kasztan bo jak napisałem jest to parę tabel, tylko opisuję to jako jedną dla uproszczenia a w rzeczywistości (tak z pamięci) to B jeden do wielu D, później każdy D jeden do wielu E, później każdy E jeden do wielu F, gdzie D+E+F składa się na moje C ( ͡° ͜ʖ ͡°)

I F zawiera pewnie z kilkadziesiąt milionów rekordów uzbieranych przez
  • Odpowiedz
W bazie danych jesli chce przechowywać obrazki które są na serwerze to najlepiej w SQL trzymać do nich nazwy? Jaką ścieżką potem się do tego odwołać? W sensie "/Folder/nazwaobrazka.jpg"? Czy potem jeśli będę chciał je wczytać z androida lub php lub czegokolwiek to taką ścieżkę zobaczy? #sql #naukaprogramowania
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@KKK1337: @dziki: @zapoznalem: Nie wiem dlaczego, teraz działa na Chrominium, ale nie na zwykłym Chrome i Firefox. Jeśli tak to spoko, ale ktoś wie jak w przyszłości tego uniknąć i żeby działało na wszystkich przeglądarkach?

EDIT//
Dziwna sprawa. Jak klikam w "admin" z przekierowaniem to nic nie zmienia. Działa tylko na chrominium. Oby po czasie nie przestało. Jednak wolałbym żeby działało również na innych, dla bezpieczeństwa.
  • Odpowiedz
@korni007: Elo mireczku - to samo u mnie.
K---a subskrypcja, która kręci się w nocy w-------a po 4GB ramu i na końcu, gdy plik excel ma ponad 1.5MB to się po 7godzinach (!) nie wykręca tylko wywala błąd.
To samo z normalnymi analizami - pobiera wszystko do RAM i tam cholera wie co z tym robi - kiedy zwykłe zapytanie na bazie w SSMS trwa 5 minut ...

Próbowałem wielu
  • Odpowiedz
@RandomowyMirek są skonstruowane tak, że najpierw wykonywane jest jedno zapytanie, potem dane z tego zapytania są sklejane w string, który tworzy zapytanie SQL, i ponownie ten sklejony string jest wykonywany

Co w tym jest złego? To że trzeba długo czekać aż te pierwsze zapytanie się zrobi? Wygląda mi to na to że do tego drugiego zapytania po prostu były potrzebne dane z pierwszego i inaczej się tego nie dało zrobić, chyba
  • Odpowiedz
Hej, czy byłby ktoś zainteresowany kursem online o SQL, który poprowadziłby za rekę od zera do solidnej wiedzy jak budować optymalne zapytania oraz jak projektować i tworzyć strukturę baz danych?
#sql #sqlserver #postgres #bazydanych
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via Wykop Mobilny (Android)
  • 3
@b-y-t-e: Raczej nie. Jest tyle kursów od zera, że myślę iż nie ma potrzeby tworzyć kolejnego. Bardziej przydałby się kurs od poziomu średniozaawansowanego do zaawansowanego.
  • Odpowiedz
Jak napisać zapytanie które dołączy mi do tabeli A rekordy o kolumnie typ='1' z tabeli B, a jeśli nie będzie rekordów o tym typie to dołączy wszystkie rekordy z B?

#sql #bazydanych
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

with x as (
select * from X where exists (select 1 from B where typ = '1') and typ = '1'
union all
select * from B where not exists (select 1 from B where typ = '1'))
select * from A join X on (...
  • Odpowiedz
Mam problem z rozwiązaniem zadania domowego z #sql #informatyka #programowanie

Pracuję na defaultowej bazie scott[tabele:emp, dept, salgrade) w oracle z dodatkową tabelą Projects, w której mam 5 kolumn: projno, projname, budget, start_date, end_date.

Moim zadaniem jest napisanie zapytania skorelowanego w klauzuli HAVING, tak, żeby wyciągnąć miesiąc w konkretnym orku, w którym kończyło się
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach