Metode de imbunatatiri ale interogarilor SQL

Întrebări legate de conectarea la baze de date MySQL prin intermediul PHP

Moderatori: Zamolxe, Moderatori

bash
Average Member
Mesaje: 51
Membru din: Joi Aug 21, 2008 9:54 pm

Mesajde bash » Lun Aug 25, 2008 2:27 am

[offtopic]E doar o coincidenta man atat.Nu cunosc persoana in cauza si scuza-ma pentru botez.Iti sunt dator cu un miel de Pasti. :wink:



"bash, esti tare ca stii bash! Pana una alta fii te rog uman. Stim si noi sa obfuscam mesaje. Poate prin metode mai ingenioase decat tine. Multumesc "

chr(109).chr(97).chr(110).chr(102).chr(97).chr(114).chr(97).chr(115).chr(117).chr(112).chr(97).chr(114).chr(97).chr(114).chr(101).chr(116).chr(117).chr(97).chr(105).chr(99).chr(111).chr(100).chr(105).chr(102).chr(105).chr(99).chr(97).chr(116).chr(101).chr(117).chr(100).chr(111).chr(97).chr(114).chr(109).chr(97).chr(109).chr(106).chr(117).chr(99).chr(97).chr(116).chr(105).chr(110).chr(9Cool.chr(97).chr(115).chr(104).chr(114).chr(101).chr(115).chr(112).chr(101).chr(99).chr(116)

Scuze daca le-am scris fara pauze , dar asa mi le-a codificat programelu facut de mine.Mai trebuie lucrat la el.

Pentru toti care vor sa se joace ca Amenthes urmatorul programel facut de mine:

Cod: Selectaţi tot

       
       <?php
1.$string = "scri ce vrei";
2.$mama = "";
3.for($i=0 ;$i<strlen($string);$i++){
4.$mama = "chr(" . ord($string[$i]) . ")"
5.echo $mama;
}

?>

Explicatia codului pentru incepatori:
1.Introduci ce vrei sa scrii
2.Pentru inceput initializezi $mama de la '0'(nu e scris nimic in ea)
3.Pentru fiecare valoare mai mica decat lungimea sirului(strlen($string))
4.retine codul ascii corespunzator fiecarei litere(string[$i]
5.afiseza sub forma chr(codul respectiv)

ENJOY[/offtopic]



Avatar utilizator
mihaitha
Senior Member
Mesaje: 2383
Membru din: Vin Mai 04, 2007 12:40 pm
Localitate: Sibiu
Contact:

Mesajde mihaitha » Lun Aug 25, 2008 9:52 am

bash scrie:blank

Rog frumos sa mi se stearga cele 2 posturi blank.Scuze.
Daca nu postai inca ceva dupa ele, puteai sa ti le stergi singur. Ai aceleasi metode aiurea de postcount ca si mandriva. No offence, dar nu ai o saptamana de la inscriere si deja incalci reguli la greu (postcount, plin de offtopic, te chinui sa fii neinteligibil) si cam ceri o ban-are.

xanderusi
New Member
Mesaje: 3
Membru din: Mar Dec 16, 2008 1:58 am

Ajutooor!!!!

Mesajde xanderusi » Mar Dec 16, 2008 2:07 am

Am nevoie de ajutor nu ma descurc prea bn cu mysql si nici cu php si am un site cu un joc mmorpg .Care ma poate ajuta sa rezolv din buguri contactatima la id:xander211 .Va pot oferi publicitate gratuita sau alte beneficii .Contactatima urgent :D

ebogdan
Senior Member
Mesaje: 218
Membru din: Joi Iul 27, 2006 2:45 pm
Localitate: Constanta

Mesajde ebogdan » Mar Dec 16, 2008 11:51 am

Și după ce ai terminat cu toate optimizările posibile la query-uri în sine, în cazul în care e serverul tău, ar mai fi ceva care majoritatea uită să treacă în my.cnf. Anume, mărimea la cache, bufferi, numărul de threaduri concurente. De exemplu:

Cod: Selectaţi tot

key_buffer = 128M
max_allowed_packet = 1M
table_cache = 256
sort_buffer_size = 8M
read_buffer_size = 8M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 8M
thread_cache_size = 8
query_cache_size= 128M
thread_concurrency = 2


Am observat creșteri de performanțe enorme (10-20x) prin folosirea la maxim a RAM-ului serverului pentru cache, în special pe chei (key_buffer). Evident, devine și mai importantă selectarea exactă doar a câmpurilor necesare, pentru a nu umple cache-ul cu câmpuri degeaba. Dar citiți articolul acesta complet.

Scorpse
Junior Member
Mesaje: 49
Membru din: Vin Iul 31, 2009 3:15 pm

Mesajde Scorpse » Vin Sep 04, 2009 2:06 pm

s-a spus ceva despre indexsi insa nu cred ca e suficient.

indecsii afecteaaa extrem de mult performanta....

Cand ai o cautare cu where camp <operator> 'valoare', e bun un index pe camp.

la o cautare camp1 <operator> 'valoare1' AND/OR camp1 <operator> 'valoare2', e mai bun un index combinat pe camp1 si camp1, decat indecsi separati pe fiecare dintre campuri.

Queriurile ar trebui optimizate sa foloseasca indecsii din plin. Chiar daca un query arata mai complicat, nu insemna ca e mai lent. Un query scris optim poate arata foarte urat si alambicat.

a se evita indecsii pe campuri dinamice, folosesc mai multa memorie. A se prefera indecsi cu marime fixa, sau numerici. Atfel de multe ori se prefera tabele de legatura si selecturi cu joinuri. Pur si simplu sunt mai rapide datorita indecsilor.

Indecsii fulltext sunt language dependent. Aveti grija in ce limba se pun, pentru ca mysql scaote cuvintele foarte frecvente. Sunt foarte buni pe campuri text, blob, etc. Deasemenea indecsii fulltext combinati pe mai multe campuri (ex: titlu, preambul, articol)..pot da rezultate pseudociudate in functie de relevanta.(Conteaza si ordinea campurilor in indexul respectiv precum si ordinea in query)

Variabilele mysql sunt foarte imp....e de preferat sa maresti limitele de memorie, dar nu excesiv. (ca exemplu am 2 gb de ram pe un srv personal, iar la o aplicatie cu >4 Mil inregistrari efective nu intra niciodata in swap. Serverul ruleaza open suse, apache 2.2, mysql 5.1.33)

Cautarile cu LIKE sunt destul de consumatoare. A se evita.
Foarte bun raport performanta o au inserturile multiple fata de x inserturi simple.


Optimize e foarte bun, asha cum s-a spus mai sus, e de preferat un cron care sa optimizeze tabele macar o data pe saptamana. Unde nu e posibil, o mica optiune in admin, sau un check pe tabele pot sa anunte adminul ca anumite tabele au nevoie de optimize.

Insa 0.3 sec la 3000 de inregistrari e imens de mult. Ar trebui sa ia 0.03.


Înapoi la “MySQL”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 32 vizitatori