Avatar billede kgp43 Nybegynder
24. april 2006 - 16:45 Der er 8 kommentarer og
1 løsning

query optimering

Hejsa,

Kan denne query optimeres?

// Get server info
$server_query = mysql_query("SELECT id,domain FROM servers WHERE enable='1' AND free_diskspace > buffer*1024*1024 AND free_tmp > buffer*1024*1024 ORDER BY rand() LIMIT 1") or die (mysql_error());
$server_fetch = mysql_fetch_array($server_query);
$server_num = mysql_num_rows($server_query);
$server_id = $server_fetch[id];
$server_domain = $server_fetch[domain];

// Check if free diskspace is blow the buffer size
if($server_num == 0) {

    // Post error message
    $status = 25;
    include "/home/domain/include/status_error.php";
    exit();
}
Avatar billede coderdk Praktikant
24. april 2006 - 17:34 #1
Du kan måske oprette et index:

CREATE INDEX freetmpbufferenable_id (enable, free_diskspace, buffer, free_tmp)

Men da du laver ORDER BY rand() ved jeg ikke hvor meget du vinder - Noget vil du sikkert vinde!

Du kan prøve at analysere den ved at sætte EXPLAIN før, altså:

EXPLAIN SELECT id,domain FROM servers WHERE enable='1' AND free_diskspace > buffer*1024*1024 AND free_tmp > buffer*1024*1024 ORDER BY rand() LIMIT 1

Så kan du prøve at oprette index'et og se hvad de siger bagefter.
Avatar billede kgp43 Nybegynder
24. april 2006 - 17:43 #2
Tror det er okay så, tænkte mere på selve "opbygningen".
Kan man "sammensætte" free_diskspace og free_tmp? (da de begge checker samme resultat)?

Er dette gyldigt?
("SELECT id,domain FROM servers WHERE enable='1' AND free_diskspace,free_tmp > buffer*1024*1024 ORDER BY rand() LIMIT 1")
Avatar billede coderdk Praktikant
24. april 2006 - 20:48 #3
Nopes, du din første er korrekt - Jeg vil anbefale dig det index ;)
Avatar billede kgp43 Nybegynder
24. april 2006 - 21:19 #4
har kun 10 posts i tabellen og max 20,000 queries per dag, kan bruge INDEX men tror næppe det gør nogen forskel.
Avatar billede coderdk Praktikant
24. april 2006 - 21:25 #5
Ja, ok :)
Avatar billede kgp43 Nybegynder
09. november 2008 - 18:32 #6
smid et svar, så er der point :p
Avatar billede coderdk Praktikant
09. november 2008 - 18:39 #7
Ellers tak du :)
Avatar billede kgp43 Nybegynder
09. november 2008 - 18:49 #8
ok, der er også gået et par år :p

takker :)
Avatar billede kgp43 Nybegynder
09. november 2008 - 18:49 #9
lukker
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