ďťż
 
[MySQL] Ograniczenie liczby zapytan ďťż
 
[MySQL] Ograniczenie liczby zapytan
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[MySQL] Ograniczenie liczby zapytan



Sarenka - 24-07-2006 00:27
[MySQL] Ograniczenie liczby zapytan
  Mam taki oto problemik.
Mam baze danych, w ktorej istaniejacych tabel zmienia nie moge -
conajwyzej dodawac tabele.
jest tabela pomiary a w niej kolumna tabel_wyn w ktorej jest numer - np 30.
Okresla on numer tabeli (ten pomiar zwrocil wynik w tabeli - dokladnie
chodzi o pomiar natezenia dzwieku i pomiar zwraca natezenie dzwieku na
roznych czestotliwosciach).
Ten numer tabeli okresla nam wartosc pola `Numer tabeli` z tabeli tabele:
+----------------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+------------------+------+-----+---------+-------+
| Numer tabeli | int(10) unsigned | | PRI | 0 | |
| Numer wartosci | int(11) | | PRI | 0 | |
| Wartosc | double | | | 0 | |
+----------------+------------------+------+-----+---------+-------+

a teraz problem...
Pomiary sa wykonane co godzine w systemie 24/7, czyli za rok mam niecale
9000 pomiarow.
Skrypt ma wyswietlic to w postaci obrazka (sonogram - na 2 wymiarowym
wykresie 3 wartosci - uzywamy osi x, osi y oraz koloru pola). Zmiesci
sie na nim maksymalnie 72 wyniki, wiec to co jest w bazie trzeba
redukowac. Zalozenie - wybieramy z danej grupy ten pomiar, ktorego
sumaryczny wynik jest najwiekszy (sumuje wartosci z kolumny `Numer
wartosci`).
Jak najlepiej skonstruowac zapytanie/a, by ich ilosc nie szla w tysiace?
Czy dalo by sie na poziomie samego zapytania z php przesylanego kazac
pogrupowac wyniki pomiarow po x (np. 100 czy 120) i zwrocic tylko ten,
ktory ma najwieksza sume?

--
Sarenka (ale facet)
I tak i nie
wiem czego chce :)





Wojtek pBT (prac) - 25-07-2006 00:38

  Sarenka napisał(a):
> Mam taki oto problemik.

Tyle jesteś na grupie i jeszcze się nie nauczyłeś...
Podaj coś więcej na temat tego swojego MySQL, częstotliwość wykonywania
zapytania o którym mówisz i akceptowalny czas oczekiwania na odpowedź.

2) podaj wszystkie tabele z których zapytanie ma korzystać.

Nie wiem, czy nie chodzi Ci np o takie coś:

SELECT max(Wartosc) FROM tab GROUP BY nr_tab, IF(nr_wart> 100,
1,IF(nr_wart>200,2,IF(nr_wart>300,3,[...])))

Przy czym możliwe, że będziesz musiał używać składni:
IF(nr_wart>300 AND nr_wart<=400)

Jeżeli masz datę pomiaru, to całość znacznie się upraszcza, bo robisz
grupowanie po odpowiednio prze formatowanej dacie: np ROK-nr_tygodnia

pBT




Paweł Matejski - 25-07-2006 03:23

  Wojtek pBT (prac) wrote:

> Nie wiem, czy nie chodzi Ci np o takie coś:
>
> SELECT max(Wartosc) FROM tab GROUP BY nr_tab, IF(nr_wart> 100,
> 1,IF(nr_wart>200,2,IF(nr_wart>300,3,[...])))

a nie prościej: GROUP BY całkowita(nr_wart/100)
całkowita() należy zamienić na odpowiednią funkcje lub rzutowanie. :)

--
P.M.




Wojtek pBT (prac) - 25-07-2006 03:23

  Paweł Matejski napisał(a):
> Wojtek pBT (prac) wrote:
>
>> Nie wiem, czy nie chodzi Ci np o takie coś:
>>
>> SELECT max(Wartosc) FROM tab GROUP BY nr_tab, IF(nr_wart> 100,
>> 1,IF(nr_wart>200,2,IF(nr_wart>300,3,[...])))
>
> a nie prościej: GROUP BY całkowita(nr_wart/100)
> całkowita() należy zamienić na odpowiednią funkcje lub rzutowanie. :)
>

mea culpa, mea maxima culpa

Dzieki, pBT





Sarenka - 26-07-2006 01:31

  >> Mam taki oto problemik.
>
>
> Tyle jesteś na grupie i jeszcze się nie nauczyłeś...

Ale rzadko sie udzielam :p

> Podaj coś więcej na temat tego swojego MySQL, częstotliwość wykonywania
> zapytania o którym mówisz i akceptowalny czas oczekiwania na odpowedź.

Nie mniej masz racje. Czestotliwosc - raczej nie do oszacowania przeze
mnie. Akceptowalny czas oczekiwania - wcale :)

> 2) podaj wszystkie tabele z których zapytanie ma korzystać.

No tutaj miedzy innymi mam problem... Jak pisalem, to nie moja baza i
nie moge jej struktury tknac (a, ze jest imho lekko dyskusyjna, to
zupelnie inny temat).
Zadanie jest takie: w formie wykresu sonogramowego zobrazowac wyniki
pomiarow. Jak dane sa bazie trzymane juz podalem.
Odpada tworzenie wykresow z gory, bo za duzo jest kombinacji tego - user
ma miec mozliwosc wybrania dowolnego przedzialu czasowego. Jest tylko
limit dolny - jeden dzien. Maksymalny nie byl brany pod uwage, ale musze
wykladowce przekonac do powiedzmy 1 roku. Z tym, ze przedzial roku a nie
ostatni rok (czyli np. od maja zeszlego do maja tego roku).

> Nie wiem, czy nie chodzi Ci np o takie coś:
>
> SELECT max(Wartosc) FROM tab GROUP BY nr_tab, IF(nr_wart> 100,
> 1,IF(nr_wart>200,2,IF(nr_wart>300,3,[...])))
>
> Przy czym możliwe, że będziesz musiał używać składni:
> IF(nr_wart>300 AND nr_wart<=400)
>
> Jeżeli masz datę pomiaru, to całość znacznie się upraszcza, bo robisz
> grupowanie po odpowiednio prze formatowanej dacie: np ROK-nr_tygodnia

Mam date co do godziny (format pola datetime)

--
Sarenka (ale facet)
I tak i nie
wiem czego chce :)




Sarenka - 26-07-2006 01:31

  Wojtek pBT (prac) napisał(a):
> Paweł Matejski napisał(a):
>
>> Wojtek pBT (prac) wrote:
>>
>>> Nie wiem, czy nie chodzi Ci np o takie coś:
>>>
>>> SELECT max(Wartosc) FROM tab GROUP BY nr_tab, IF(nr_wart> 100,
>>> 1,IF(nr_wart>200,2,IF(nr_wart>300,3,[...])))
>>
>>
>> a nie prościej: GROUP BY całkowita(nr_wart/100)
>> całkowita() należy zamienić na odpowiednią funkcje lub rzutowanie. :)
>>
>
> mea culpa, mea maxima culpa
>
> Dzieki, pBT

Dziekuje obu Panom. Potestuje i podziele sie rezultatami.

--
Sarenka (ale facet)
I tak i nie
wiem czego chce :)
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?= [mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?= [MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?= [mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?= [MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?= [MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?= Gdzie MySQL 4.1, a gdzie 5.0? [MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?= [MS SQL] "set names" (mySQL) w MS SQL MySQL - jak =?ISO-8859-2?Q?wyeksportowa=E6_zawarto=B6=E6_wie?==?ISO-8859-2?Q?lkiej_tabeli?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • shutter.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com