Wpis z mikrobloga

mirki, mam sobie takie query:
DATE_FORMAT(MAKEDATE(YEAR(date_from), 1) + INTERVAL QUARTER(date_from) QUARTER - INTERVAL 1 Quarter,'%Y-%m-01 00:00:00'),NULL) które wylicza mi datę początkową kwartału do której wpada datefrom, i teraz tutaj mam zagwozdkę, jeśli datefrom i dateto są w innym kwartale to muszę też policzyć tą datę dla date_to - czy jest sens dodawać IF'a ? czy wpłynie to jakoś na wydajność ? czy może sam IF doda overhead i wyjdzie na to samo ? jak to działa w #mysql ? wołam też #programowanie i #webdev
  • 8
@Jurigag: jeśli IF masz w polu, a nie w warunku, to nie ma to specjalnego wpływu na wydajność. Pola i tak będą musiały zostać pobrane (największe obciążenie), a co z nimi zrobisz, to już jest marginalna kwestia.
@Jurigag: wg mnie nie jest to narzut, którym powinieneś się przejmować. Będzie o niebo niższy niż dwa zapytania wykonane osobno, a wykonujące podobne obliczenia.
EXPLAIN Ci wszystko wyjaśni i raczej nie zobaczysz tam wpisu u "wykonuję agregację". Ale tak jak mówię - dopóki jest to w polach, bo jak zaczniesz tworzyć kolumny agregowane po sumach i potem po nich robić having, to już zupełnie inna kwestia.
@RRybak: wiesz, strasznie skomplikowane zapytanie mam po prostu i widzę że już ma lekkie problemy z wydajnością takze się pytam, co prawda jest cache ale często się zmieniają dane :P
@Jurigag: jakbym Ci pokazał skomplikowane zapytanie na 4 strony, to byś się złożył ;)
Po części jest tworzone automatycznie, ale wykonuje się ekspresowo.
Na cache nie polegaj. Skupiaj się na indeksach i prawidłowych łączeniach.