Pytanie będzie dotyczyło dwóch zapytań mających zwrócić teoretycznie ( ͡° ͜ʖ ͡°) taki sam wynik. Chodzi o to, które będzie bardziej wydajne, czyli które szybciej się wykona.

Załóżmy, że mamy zapytanie A, w skład którego wchodzi podzapytanie B oraz to zapytanie A czerpie jeszcze dane z jakiejś tabeli, nazwijmy ją C

Wersja 1:
Po klauzuli FROM zapytania głównego (A) wstawiamy podzapytanie B, które następnie łączymy JOINEM z tabelą C na podstawie jakiś identyfikator id
  • 20
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@TomaszWKS: Tak na szybko:
1) Po co ci DISTINCT jeśli masz GROUP BY?
2) Czy GROUP BY jest poprawny? Grupujesz tylko po jednej kolumnie a nie wiem jak sobie radzi Oracle z functional dependencies (jeśli działa to jest poprawny to nie MySQL)
3) Czy Oracle przekształca AND UPPER(p.polistatus) NOT IN 'Z' do p.polistatus NOT IN ('z','Z')?

Poza tym to wszystko zależy od wróżek i fazy księżyca ale generalnie
  • Odpowiedz
@plushy: Masz rację, pierwsze wykonuje się jako index only scan, drugie jako index scan.

nadal pozostaje kwestia dobrych praktyk

W tym całkowicie się zgadzam, jeśli nie potrzebujemy funkcjonalności pomijania NULLi to zawsze powinno się używać 1 lub * (zależnie co jest już używane w projekcie).
  • Odpowiedz
Witam mirków.
Mam pytanie odnośnie wydajności. Będę musiał zaimplementować wyświetlanie dużej ilości danych w XML. Miałem to zrobić w taki sposób, że w #postgresql utworzę nowy view, następnie w #php używając #yii będę generował #xml. Jednak teraz pomyślałem po co komplikować sprawę? Może lepszym rozwiązaniem będzie stworzenie funkcji w #bazydanych i wygenerowanie XML od razu w DB. Wtedy wystarczy tylko podać
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@mariecziek: zależy co to za dane i jak bardzo będą się zmieniały, jak często będzie pobierane to samo, to lepiej wygenerować już jakiś xml z tymi danymi jako cache i serwować plik xml i tyle, a przy jakiejś zmianie tych danych wygenerować ten plik na nowo, albo po stronie klienta jak napisali wyżej a do przeglądarki przekazywać tylko jsona
  • Odpowiedz
Mirki mam tabelę A i tabelę B, interesuje mnie taki join, aby stworzyć tzw. master view i dopełnić go null'ami.

O co chodzi:

tabela A{linia,qty,data}{"l1,5,2015-09-21", "l3,2,2015-09-21"}
tabela B{linia}{l1,l2,l3,l4,l5,l6}
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Dobra jestem idiotą, nie rozumiem dlaczego uparłem się żeby selectować z A zamiast B. LEFT OUTER JOIN'a próbowałem ale chyba na odwrót... Dzięki! ;)
  • Odpowiedz
@w011: Prawie.
SELECT post_id FROM wp_postmeta A WHERE EXISTS (SELECT post_id FROM wp_postmeta B WHERE meta_key = 'cp_city' AND meta_value = 'Warszawa' AND A.id_posta = B.id_posta)
  • Odpowiedz
#programowanie #csharp #bazydanych

Mam pytanie dotyczące przechowywania danych w C#. Jak to mogę zrobić w najprostszy sposób? Macie jakieś dobre technologie do polecenia? Robiłem coś takiego w Javie i używałem bazy danych Oracle do tego tylko że jakbym skorzystał z tego teraz to klient razem z aplikacją musiałby instalować bazę danych osobno. Chyba że jest jakaś możliwość dystrybucji tego z aplikacją? Ewentualnie czy Microsoft ma jakieś
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mirki, możecie mi doradzić, nakierować? Wybrałem sobie dwa kierunki studiów tak wstępnie. Teraz jestem w ostatniej klasie #techbaza technik informatyk - radzę sobie i jestem elastyczny, jeśli chodzi o nowe umiejętności.

1. Inżynieria kosmiczna - jestem bardzo into #kosmos i chciałbym włożyć jakąś cegiełkę w eksplorację kosmosu () To moje hobby, mógłbym się zajmować tym cały czas - projektowanie różnego rodzaju
Przemysl - Mirki, możecie mi doradzić, nakierować? Wybrałem sobie dwa kierunki studió...

źródło: comment_iEasL6jGVu5kkSRFjxYC36Val1Edz2dq.jpg

Pobierz
  • 16
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@relik39: Sugerują spłaszczenie widoku (subquery flattening), które i tak by mogło nastąpić.

Widok zawsze jest traktowany jako zapytanie go generujące (mniej więcej).
Hinty mają na celu zmiejszenie liczby potencjalnych planów.
  • Odpowiedz
@plushy: ok, już doczytałem o co w tym chodzi, po prostu operując na samej nazwie widoku, bez jawnego podawania generującego go zapytania nie było dla mnie na pierwszy rzut oka oczywiste co się dzieje w tej transformacji. Thx za wskazówki.
  • Odpowiedz
Mirki z #bazydanych #sql #mysql potrzebuję małej pomocy od kogoś trochę bardziej obytego z zapytaniami.
Mam 2 tabelę - jedna, o nazwie page - przechowuje informacje o stronach, id, nazwa itd.
druga tabela przechowuje informację o poszczególnych wyświetleniach użytkowników - nazywa się view, posiada pola id, useragent, id strony(id z tabeli page) oraz datę.
Pytanie brzmi - jak za jednym zamachem otrzymać pełną informację o stronie
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@kondominium-rosyjsko-niemieckie: SQL wszędzie podobny. Jeżeli chcesz administrować postgresem to a) naucz się pghba.conf b) pobaw się slonym c) pgpool (moim zdaniem konieczne) d) RTFM (dla postgresa jest świetna) e) czytaj polskiego guru od postgresa f) zainstaluj sobie jakiś język programowania w postgresie (np. plpython) żebyś nie musiał się grzebać w tych durnych PgSqlach. No i jak będziesz miał problem to śmiało pytaj ( ͡° ͜ʖ ͡
  • Odpowiedz
Czołem mirki, mam bazę mysql postawianą lokalnie. Jedna z tabel ma ~500k rekordów (konkretnie jest to widok). Na moim sprzęcie (i7-860 2.8 GHz, 12GB ram 1600 MHz) pobranie rekordu z samego końca tabeli zajmuje ~12 sekund. Dla klienta zamówiłem już porządny serwer (Dell PowerEdge T110 II), ale wolałbym to rozwiązać programistycznie.

Na pewno pomoże domyślne posortowanie tabeli od końca - co wystarczy na większość przypadków, jednak chciałbym uzyskać jak najlepszy czas dostępu
  • 35
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Przechowywanie bardzo dużej ilości obrazów w bazie danych jako blob (dokładniej to w Cassandrze) - jak bardzo zły jest to pomysł? Chodzi mi o warunki polskie - by lag był jak najmniejszy (inaczej bym zaprzęgnął Amazon S3, a tak to jakąś polską chmurę/VPSy mógłbym wziąć). Obrazy nie będą duże, max 1-2MB, średnio ~200kB.

Z plusów widzę:
- banalnie prosto można zrobić klastry Cassandry, różne datacenters etc.
- brak single point of failure przy paru klastrach,
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@RonPaul: IMHO nie ma problemu, ale!
Czy dane mogą być streamowane czy całość obrazka idzie do pamięci? Bo jeśli to drugie, to przy dużym obciążeniu może wywalić out of memory.
  • Odpowiedz
Czy dane mogą być streamowane czy całość obrazka idzie do pamięci? Bo jeśli to drugie, to przy dużym obciążeniu może wywalić out of memory.


@Ginden: mogą być streamowane AFAIK, ale będę o tym coś więcej czytał, żeby nie było przypału ;)
dzięki.
  • Odpowiedz