Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL]niekończące się zapytanie sql
Forum PHP.pl > Forum > Przedszkole
wpaski
Czy jest możliwe napisananie zapytania, które "wisi" ?
cos w stylu:
  1. WHILE 1=1
  2. SELECT * FROM `test` WHERE true

w samym sql'u
nospor
Napisz poprostu co chcesz osiągnąć, a nie kombinujesz jak kon pod gorke
wpaski
chce zeby zapytanie wisiało, zebym mogl sobie je ubić kiedy chce, np w 30 sekundzie. bez wypelniania tabeli mnostwem danych
nospor
A teraz wytlumacz jeszcze raz, tak na spokojnie. Pomysl sobie, ze czytajacy nie siedzi w Twojej glowie i nie rozumie Twoich skrotowych mysli.

wpaski
hmm, no załóżmy jest baza z milionem rekordów danych, jakieś zapytanie na tej bazie wykonuje sie powiedzmy 5 sekund, ja chcę "imitować" taką dużą bazę, a raczej zapytanie które "wisi" wyszukując rekordy w takiej ogromnej bazie (jest wyświetlane na liście procesów bazy MySQL), chce żeby ono wisiało bez posiadania tak wielkiej bazy, czyli napisać zapytanie co zadziała na małej bazie z 10 rekordami a będzie się wykonywac długo - tyle ile chce. Nie potrafie tego lepiej wyjaśnić smile.gif Także jeśli to nie rozjaśnia sprawy to się poddaje smile.gif
nospor
Ok, teraz jest już jaśniej smile.gif
Napisz mi tylko proszę po co ci coś takiego? Prowadzisz jakies teksty wydajnosciowe? Cos innego?

Zas co do samego pytania, to tworzysz procedure z petlą a wtej petli twoje zapytanie
http://dev.mysql.com/doc/refman/5.0/en/while.html
wpaski
dzięki, no własnie już próbowałem z procedurą i właśnie z tym przykładem ale chyba coś robię źle, takie coś wklepuje w phpmyadminie:
  1. CREATE PROCEDURE dowhile()
  2. BEGIN
  3.  
  4. WHILE 1=1 DO
  5.  
  6. SELECT * FROM `test` WHERE 1
  7.  
  8. END WHILE;
  9.  
  10. END;
  11.  
  12. call dowhile();


a czemu takie cos robię, bo potem chcę napisac skrypt który by ubijał takie zapychające baze zapytania, dlatego potrzebne mi jedno zapytanie które się nie kończy, pewnie prosty błąd bo wczesniej nic z procedurami nie robilem:
Kod
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'PROCEDURE dowhile()
nospor
A gdzie ty odpalasz to zapytanie?
wpaski
dzięki, czyli trzeba w konsoli, inaczej się nie da, pozdrawiam:)
nospor
Da sie wszedzie, tylko w zaleznosci od tego gdzie to odpalasz, to trzeba to zrobic w specjalny sposob. Dlatego zadalem proste pytanie: gdzie to odpalales ze miales ten blad.
wpaski
w phpmyadminie, ale masz rację, da się, tylko trzeba pamiętać o ustawieniu: DELIMITER // a potem spowrotem na ";"
mimo wszystko nie uzyskałem tego efektu jaki chciałem tongue.gif
ponieważ zapytanie wykonuje sie wkółko(trwa kilka milisekund) a nie w sposób ciągły, czyli nie ma tej "imiacji" dużej bazy danych
nospor
No zapytanie bedzie sie wykonywalo w petli non stop od poczatku do konca. Wykona sie raz, potem wykona sie drugi raz, potem wykona sie trzeci raz itd.
wpaski
no właśnie, a ja chciałem, żeby wykonało sie raz i trwało trwało i trwało.
nospor
No jak moze trwac i trwac skoro gdy doleci do konca to jest koniec i kropka. Jak ma trwac cos co sie juz skonczylo?? Przeciez to nie ma zadnego sensu.

Jak tak ci zalezy na tym, to wrzuc do tej tabeli petryliard rekordow i bedzie ci trwalo dluzej
wpaski
no wiem ale myślałem, że można jakos to zrobić bez wypełniania tabeli petryliardem rekordów, ok no to koniec tematu
nospor
kosmos co ma PHPowy sleep do zapytania mysql? NIC.

Ale juz sleep mysqlowy moze pomóc

  1. SELECT SLEEP(5), test.* FROM test
nospor
waitfor tez sie tutaj na nic nie zda... przeczytaj pare ostatnich postow od pojawienia sie procedury w tym temacie.

Dodanie sleep() do zapytania mysql moze rozwiązac problem. Podalem przyklad w poprzednim poscie. Watek mysql bedzie wisial ciagle na tym zapytaniu. NIe będą jednak pożerane zasoby procesora
phpion
No to upewnij się, że dotyczy to MySQL. Bo nie dotyczy.
kosmos
a coś takiego?

  1. SELECT name, surname FROM X WHERE name ='joe' AND surname='buzer' WAITFOR DELAY '00:00:20'


przyznacie, że mimo wszystko nakierowałem w temacie smile.gif
nospor
Zrozum, ze w mysql nie ma waitfor...
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.