webForumDet fria alternativet

Är detta tung kod för databasen?

Databaser & SQL

3 svar · 482 visningar · startad av silfver

Medlem sedan apr. 200312 679 inlägg
Frågan#1

Jag använder MySQL och kör följande kod på min sida:

 <?php
mysql_connect("xxx","xxx","xxx")
	or die("Could not connect: " . mysql_error());
mysql_select_db("xxx");
$result = mysql_query("SELECT headline FROM pixelpost_pixelpost WHERE datetime < NOW() ORDER BY datetime DESC LIMIT 1") or die('Err: ' . mysql_error());

if(mysql_num_rows($result) > 0){

$data = mysql_fetch_array($result);

echo $data['headline'];
}

mysql_free_result($result);
?>

Jag inbillar mig att den här koden drar ner databasen något och gör sidan segladdad. Den här filen ligger på varje sida som jag visar och det betyder att den här frågan körs varje gång sidan laddas om.

Samtidigt så ställs en del andra frågor i bakgrunden (kör wordpress). Tror ni att det här kan ha någon märkbar effekt på sql-servern?

Medlem sedan dec. 19996 721 inlägg
#2

Det finns viss tyngd i frågan, eftersom ditt datetime-villkor kommer att kräva en scan-operation (tabellen eller indexet loopas igenom). I normala fall borde det inte vara något direkt problem, men eftersom frågan körs så ofta och kommer att ha ett relativt statiskt resultat så kan du gärna se till att optimera lite, t.ex. genom att spara undan resultatet och endast kasta det undansparade när pixelpost_pixelpost-tabellen uppdateras.

Medlem sedan apr. 200312 679 inlägg
#3

emission skrev:

Det finns viss tyngd i frågan, eftersom ditt datetime-villkor kommer att kräva en scan-operation (tabellen eller indexet loopas igenom). I normala fall borde det inte vara något direkt problem, men eftersom frågan körs så ofta och kommer att ha ett relativt statiskt resultat så kan du gärna se till att optimera lite, t.ex. genom att spara undan resultatet och endast kasta det undansparade när pixelpost_pixelpost-tabellen uppdateras.

Hur menar du med att spara undan resultatet? Hur ska jag göra det?

Medlem sedan dec. 19996 721 inlägg
#4

silfver skrev:

Hur menar du med att spara undan resultatet? Hur ska jag göra det?

Jag menar att du ska spara resultatet någonstans som inte kräver någon fråga till databasen, eller åtminstone en enklare fråga.

Du skulle kunna ha en tabell som där du lägger id-numret på posten i fråga och göra en enkel join, en textfil med headline-värdet, en sessionvariabel. I princip vad som helst som reducerar I/O-kostnaden.

276 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)