Wpis z mikrobloga

#pracbaza #sql #programowanie
Mirki mam problem. Mam dosyć długie zapytanie sql na ponad 400 linijek, składający się z paru withów na początku.
Jak się zawężę w wherze na jeden identyfikator to wszystko jest spoko. Ale jak kompiluje dla całości (ponad 100 tys identyfikatorów), bez żadnych zmian w kodzie, to dla tego jednego identyfikatora mi gubi 2 atrybuty. No jak?!
  • 16
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@wicherq jak sprawdzam kod czesciami to zawsze te dwa atrybuty są, i jest ok. Problem jets na całości ( ͡° ʖ̯ ͡°)
@buchowo łączenia są po jednym data type, ale np. długość tekstu w kolumnie (identyfikatora po którym łączę) waha sie miedzy tabelami. Ale użyłam Trima i nic to nie dało.
Próbowałam też puszczać zapytanie bez hintów, bo używałam paralela ósemke, myślałam że moze się przez
  • Odpowiedz
@cohontes powiedzmy, że to identyfikator produktu, więc np "1000" odpowiada produktowi A, "1001" odpowiada produktowi B i tak dalej, aż do produktów nr pierdyliard. No i między tabelami łączę po tych unikalnych identyfikatorach, zawsze mam jeden wiersz per identyfikator
  • Odpowiedz
@MechanicznaPitaja: w komercyjnych projektach nie używa się w ogóle SQL do wyszukiwania danych, te rzeczy które chcesz by były wyszukiwalne z bazy danych SQL - wybierasz je i wrzucasz do elastica (silnik wyszukań) i tworzysz przeszukiwalny indeks

Zapytania wyszukujące dane z elasticsearcha są kilkadziesiąt razy szybsze niż wyszukiwanie w SQL ze względu na architekturę elasticsearcha (odwrócone indeksy, rozproszenie, skalowanie, równoległość itd)
  • Odpowiedz
architekturę elasticsearcha (odwrócone indeksy, rozproszenie, skalowanie, równoległość itd)


@nad__czlowiek: ale każdy rdbms to już przecież też ma. I w przetwarzaniu danych nie chodzi tylko o wyszukanie sobie szybko po tekście.

No i w komercyjnych projektach używa się SQLa...
  • Odpowiedz
@MechanicznaPitaja: spotkałem się w przeszłości z podobnym przypadkiem, ale ciężko wróżyć z fusów. Rozbij zapytanie na mniejsze podzapytania i zamiast WITH np użyć tabel tymczasowych by znaleźć w którym miejscu „znikają” dane.
  • Odpowiedz
@nad__czlowiek ale poczekaj, jakby mi dane znikaly na łączeniach, to przy puszczeniu całego zapytania z ograniczeniem na ten jeden identyfikator też nie miałabym danych, a mam. Nie mam dla niego danych, jak puszczam zapytanie dla całego zbioru i potem go wyszukuje - zupełnie nic w kodzie nie zmieniam, tylko zakomentowuje linkijke z wyborem identyfikatora
  • Odpowiedz