Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Cachowanie obliczeń w zapytaniu
Forum PHP.pl > Forum > Bazy danych > MySQL
micze
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.
Ilware
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.