Avatar billede kgp43 Nybegynder
05. november 2005 - 15:27 Der er 8 kommentarer og
2 løsninger

Hurtige mysql query?

Hejsa,

Er dette den hurtigste løsning, for at check om en værdi findes i en tabel?

$cookie_query = mysql_query("SELECT id FROM sessions WHERE cookie_id='$cookie_id' ") or die(mysql_error());
    $cookie_count = mysql_num_rows($cookie_query);
    if ($cookie_count != 0) {
Avatar billede nielle Nybegynder
05. november 2005 - 15:37 #1
Det kan aldrig betale sig at hente mere data ud end det man skal bruge:

$cookie_query = mysql_query("SELECT count(id) AS antal FROM sessions WHERE cookie_id='$cookie_id' ") or die(mysql_error());
$cookie_count = mysql_fetch_assoc($cookie_query);
if ($cookie_count["antal"] != 0) {
Avatar billede pidgeot Nybegynder
05. november 2005 - 15:41 #2
Du bør også kunne øge hastigheden ved at indeksere den kolonne du kigger på, hvis det ikke allerede er gjort.
Avatar billede kgp43 Nybegynder
05. november 2005 - 15:44 #3
Ahhh, det vil jeg lige gøre.

dvs index cookie_id ?
Avatar billede pidgeot Nybegynder
05. november 2005 - 15:46 #4
Ja, det er den kolonne.
Avatar billede kgp43 Nybegynder
05. november 2005 - 17:11 #5
ligger i et svar, så er der point til jeg begge
Avatar billede pidgeot Nybegynder
05. november 2005 - 17:13 #6
Værsgo.
Avatar billede fixxxer Nybegynder
05. november 2005 - 18:30 #7
Ville følgende ikke være endnu hurtigere?

$cookie_query = mysql_query("SELECT count(id) AS antal FROM sessions WHERE cookie_id='$cookie_id'") or die(mysql_error());
if (mysql_result($cookie_query, 0, 'antal') != 0) {  }
Avatar billede nielle Nybegynder
05. november 2005 - 19:04 #8
Svært at sige - umiddelbart gætter jeg dog ikke på at det er ret meget forskel. Det er ikke helt nok at det fylder færre linjer. Desværre har jeg ikke lige en DB at tjekke efter med.

... og et svar :^)
Avatar billede pidgeot Nybegynder
05. november 2005 - 19:14 #9
Jeg tror højst man sparer et millisekund ved den linie, hvis man da sparer noget som helst - og typisk plejer det at være queries der er flaskehalsen :)
Avatar billede kgp43 Nybegynder
05. november 2005 - 21:45 #10
Tror heller ikke det får den store betydning.
Tabellen har 80,000 enteries og skal nok gennemsøges 40-50,000 gange per dag (jævnt fordelt).

Har en seperat DB server til dette formål (Dual Xeon, SCSI drives med 2GB ECC).
Skal dog lige nævnes at overstående query, er en lille del af den totale belastning.

Takker for hjælpen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester