Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Cachowanie obliczeń w zapytaniu
micze
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 17.11.2011

Ostrzeżenie: (0%)
-----


Witam
Podam abstrakcyjny przykład poniewąż zalezy mi na samej istocie problemu
  1. SELECT * FROM entries WHERE ('$time'/interval > 5 AND '$time'/interval < 10 ) OR ('$time'/interval > 20 AND '$time'/interval < 30 )

$time jest zmienną PHP.
Problem jest taki ,że w prawdziwym przykładzie będzie 6 takich warunków , co daje 12 obliczeń wyrażenia '$time'/interval.
Moim pytaniem jest to, czy MySQL jest na tyle "inteligentny", że potrafi cachować takie wyrażenie i obliczyć je raz a nie 12 ( to będą duże liczby) ?
Jeśli nie czy zminimalizuje ilość obliczeń wyrażenia do 1 za pomocą procedury (jestem zielony w tym temacie, tak więc proszę o ewentualne wskazówki)
  1. SELECT *,( repeatInterval + repeatMode) AS res FROM entries WHERE (res > 5 AND res < 10 ) OR (res > 20 AND res < 30 )

Czy rozwiązaniem jest powyższy przykład ?

Ps. ominąłem BETWEEN, ponieważ chodzi o idee i chciałbym zredukować obliczanie wyrażenia do 1.

Ten post edytował micze 18.11.2011, 00:04:46
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
Ilware
post
Post #2





Grupa: Zarejestrowani
Postów: 248
Pomógł: 31
Dołączył: 14.12.2010
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


W MySQL nie istnieje takie coś jak cache na wynikach.Możesz tylko próbować zrobić coś na tablicy memory ew kombinować coś z view.Co do procedury ,owszem, możesz napisać ale to Ci nie za wiele da bo i tak nadal będzie się wykonywało tyle samo obliczeń, tyle że w procedurze. Proponuję napisać sobie jakiś moduł oparty o singletona albo coś wym stylu, i cach'owanie w nim danych wynikowych.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 03:21