Ciężko tak naprawdę powiedzieć, choć oczywiście jest znacznie, znacznie wolniejsze niż natywne. tabela tymczasowa ma engine=memory. Sam report generuje się kilkanaście sekund (a czasami ponad minutę), więc istotne spowolnienie nie jest tak naprawdę bardzo odczuwalne :)

Dzisiaj już nie zdążę zrobić żadnych pomiarów, ale na pewno to zbadam :)

... w zasadzie ten kod, po niewielkich zmianach, można by upublicznić ...
  • Odpowiedz
Mam skrypt, który uaktualnia tabelę mysql na podstawie informacji z dogeapi.com. Proste. Później na podstawie danych z mysqla generowana jest treść na stronę. Jednak sprawdzanie zawartości stanu portfela przez api trwa długo i obawiam się, że przy dużej bazie userów 30 sekund to będzie za mało na dokończenie działania skryptu :P Jakieś wskazówki jak to zoptymalizować?

if(mysql*num*rows($wynik) > 0) {



while($r = mysql*fetch*assoc($wynik)) {
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

[ #mysql #sql ]

mirki, z sql zazwyczaj nie mam problemu, ale chyba utkąłem.

w tabeli są dwie kolumny: godzina [time] i liczba [int]. pytanie: jak pogrupować dane po godzinie do dwóch stref czasowych 00:00:00 - 11:00:00 i 12:00:00 - 23:00:00 żeby zliczyć sumę liczb w obu tych zakresach godzin? przyświeca mi idea z podzapytaniem w leftjoin do samej sobie, ale skomplikowanie rozwiązania znacznie przewyższa wartość "projektu" ;)
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@tomix: Przy takim przyroście to bez różnicy - każde rozwiązanie będzie dobre - i union i case. Ewentualnie możesz zrobić triggera on insert, który będzie ustawiał z automatu strefę czasową - odpytanie takiego widoku będzie szybsze (o ułamki sekund - mając na uwadze liczbę danych) i przeniesiesz kod na tabele. Ale to bardziej sztuka dla sztuki.

BTW - zamiast rozpisywać drugiego whena w case, możesz zrobić else.
  • Odpowiedz
W projekcie przechowuję dużo małych obrazków (powiedzmy że ikon) tworzonych przez użytkowników. Jest ich nawet po kilkadziesiąt na usera, wymiary ok 100x60px, format png, zajmują po kilka-kilkanaście KB.

Na początku trzymałem je w plikach, ale żeby zmniejszyć liczbę requestów zapisuję je jako base64. Obecnie trzymam to wszystko w bazie (tzn zakodowane base64, nie pliki :)), ale obawiam się, że wraz ze wzrostem liczby uzytkowników baza może tego nie przeżyć, tym bardziej, że
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

SELECT YEAR(data) AS RokSprzedazy, COUNT(fakturaID) AS IloscDokumentow FROM faktury GROUP BY RokSprzedazy HAVING RokSprzedazy BETWEEN 2006 AND 2008


@singollo: W Mysql tak - dlatego tez....

Note that MySQL, unfortunately, doesn't adhere to this standard, causing nothing but confusion. Don't fall for MySQL's tricks. GROUP BY transforms table references. You can thus only reference columns also referenced in the GROUP BY
  • Odpowiedz
You can thus only reference columns also referenced in the GROUP BY clause.


@msq: To nie jest do końca prawdziwe, nie trzeba pakować wszystkich kolumn które wybierasz do GROUP BY, SELECT a1, a2, max(b1) from a JOIN b ON (....) GROUP BY a1 może być całkowicie poprawne nawet poza MySQL
  • Odpowiedz
zakładanie nowego klucza na tabeli ~700k rekordów - #mysql myśli już 2 godziny.

A gdybym tylko wcześniej sprawdził wersję serwera...
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Wykończy mnie ten mysql. Próbuję zrobić jakikolwiek (już teraz) trigger, przepisuję przykłady z książek, przeklejam z internetu i cały czas bad syntax. Powie mi ktoś co tutaj jest źle?

CREATE TRIGGER rabat

BEFORE INSERT ON zamowienia

FOR
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Onoki: hint: new. old.

@ to zmienna, do wartosci kolumn odwolujesz sie uzywajac new.nazwakolumny lub old.nazwakolumny

new. jest dostepne przy insertach i updaejtach (nowa wartosc
  • Odpowiedz
Siema mirki webdevujące pod windą (linuksiarzom się raczej nie przyda, chyba, że sobie poprzerabiają na basha)

Pewnie często korzystacie z konsoli windowsowej w przeróżnych celach. Mój kolega z pracy napisał kilka na prawdę niezłych i przyspieszających pracę skryptów do shella, ostatnio profesjonalnie to opisał i podzielił się z resztą firmy, a ja teraz dzielę się z Wami. od pewnego czasu sam z nich korzystam i na prawdę polecam.

Drodzy programiści i drogie programistki
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@entrop: Wieczna beka z ludzi którzy piszą "O JEZU O MUJ BORZE WEBDEV POD WINDO JAKIE TO MUSI BYĆ STRASZNE xDDDDD". Moje pytanie brzmi: wtf? Co takiego mają na tych swoich o--------h Linuxach, że tam jest to super przyjemnością?
  • Odpowiedz
@Marmite: + wiele innych rzeczy. Przykładowo niech ktoś mi powie jak wygodnie zrobić

git bisect
w jakimś GUI? W IDE różnie wygląda sprawa z watcherami do testów. Bardzo często siedzę dużo w konsoli Railsowej. Pry Driven Development też jest znacznie prostsze w terminalu. Terminal z TMuxem można w 100% wygodnie obsłużyć bez użycia myszy, co jako osobie pracującej często w drodze bardzo pomaga. Narzędzia jak GHCi, Pry, bc, dc, find,
  • Odpowiedz
W sumie podpada to pod 3 tagi, więc sorry za spam, ale:

Jeśli w MySQL użyję: UPDATE tabela SET starenetto=netto, netto = 100, brutto = netto * 1,23;

to czy brutto mi się ustawi poprawnie na 123zł, a poprzednie netto zostanie zapamiętane?

W
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@aaadaaam: generalnie to działa. Na 5.0 i 5.5. Schematy testowe jak wyżej "ustaw netto, wykorzystaj kolumnę do brutto" niby chodzą. "Generalnie" i "niby". Jako jednak, że w dokumentacji jest o magiczne "z reguły", a jest to system finansowy, to chyba nie odważę się puścić tego na większą skalę :)
  • Odpowiedz
@RRybak: Będzie dzialało do czasu....

a jest to system finansowy


Ja bym forsował refaktoryzacji aplikacji.

To się robi. Systemy się zmieniają coś co miało być na rok, służy potem wiele lat i pojawia się problem jak tutaj z ceną.
  • Odpowiedz
Protip: Nie przenoś zadań z bazy danych na wyższy poziom, jeśli baza może je wykonać samodzielnie. A już w szczególności durnotą jest robienie SELECT / INSERT w dwóch krokach, skoro można użyć znakomitego INSERT INTO ... SELECT .. ON DUPLICATE KEY UPDATE...

#mysql #sql
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mirki mam problem chciałbym aby wszystkie - zamieniało mi na NULL lecz zapytanie które storzyłem wywala wszystko wszystkie rekordy (nawet te bez '-') co robię źle?

UPDATE baza SET Ilosc = REPLACE(Ilosc, '-', NULL)

#mysql #programowanie
  • 27
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach