Wpis z mikrobloga

Pytanie do Mirków z pod tagów #sql #oracle #php #js

Na stronie co 15 sekund odpytuję bazę Oracle (prosty SELECT). Jednak gdy baza jest mocno obciążona czas wykonywania zapytania jest dłuższy niż czas odświeżania strony. Bazę mam tylko do odczytu - nie mam możliwości stworzenia własnego indeksu itp, a zapytania zoptymalizować też za bardzo nie mogę (bo jak zoptymalizować SELECTa jednego pola z jednym WHEREm?).

Czy jest możliwe aby napisać zapytanie tak, aby ustawić jakiś timeout po którym będzie zwracać nulla (lub cokolwiek innego)?
A może da się to obsłużyć w kodzie strony?
Załóżmy, że taki null nie jest problemem i będę wiedział co z nim zrobić.
Przypominam, że nie mam uprawnień do modyfikowania/ustawiania czegokolwiek w bazie - mogę jedynie robić SELECTy.
  • 11
@Stamper: jeśli masz najnowsze MySQL 5.7, to możesz zastosować trick z optymalizatorem

select /*+MAX_EXECUTION_TIME(5)*/ * from jakas_tabela
Parametr w środku to maksymalna ilość milisekund, po której query wypieprzy się błędem 3024. W zależności od wersji serwera, wcześniej nazywało się to chyba MAX_STATEMENT_TIME , ale raczej 5.7.4 jest wymagane.

edit: nie wiem czy edytowałeś tagi, ale wyskoczyło mi to pod #mysql :/
@Stamper: Coś mi tutaj śmierdzi generalnym problemem wydajnościowym, czyt. ktoś oszczędza na dyskach/ramie bądź pisze nieoptymalne zapytania.
Jak rozumiem na bazę idą także inne zapytania niż Twoje selecty?