webForumDet fria alternativet

min sql-fråga går väldigt seegt

Databaser & SQL

12 svar · 492 visningar · startad av ampy

Medlem sedan feb. 20011 498 inlägg
Frågan#1

Jag har denna sql-fråga:

	SQL = 	" SELECT gi.id, gi.datum, gi.gast_id, gi.text, gi.last, m.username, m.bild, gs.text " & _
		" From gastbok_inlagg gi, members m " & _
		" left outer join gastbok_svar gs on gs.inlagg_id = gi.id " & _
		" WHERE gi.gast_id = m.id AND gi.id = gs.inlagg_id " & _
		" AND gi.agare_id = "&idnr&" order by gi.id desc "

Den sql-frågan laddas den inte alls (sidan hänger sig). Vad kan det vara för fel?

Medlem sedan dec. 2000399 inlägg
#2

Är det inte något fel i presentationen? Om det är något fel i frågan borde du se det och om den returnererar data så borde det visas. Vad händer om du kör den direkt i db:n?

Medlem sedan feb. 20011 498 inlägg
#3

Jag vet att det är fel på sql-frågan för att direkt efter att jag hade executat(heter det så?) sql-frågan skrev jag

response.write "a

och det borde returnera ett felmeddelande, men den reagerade inte på det. Sidan bara laddar och laddar...

Medlem sedan juni 200032 967 inlägg
#4

juventus1 skrev:

Vad händer om du kör den direkt i db:n?

Medlem sedan feb. 20011 498 inlägg
#5

Ska testa det när jag kommer hem. Återkommer med resultat.

Medlem sedan dec. 20003 887 inlägg
#6
SQL = " SELECT gi.id, gi.datum, gi.gast_id, gi.text, gi.last, m.username, m.bild, gs.text " & _
" FROM gastbok_inlagg gi " & _
" LEFT OUTER JOIN gastbok_svar gs ON gs.inlagg_id = gi.id " & _
" INNER JOIN members m ON gi.gast_id = m.id " & _
" WHERE gi.agare_id = " & idnr & _
" ORDER BY gi.id desc"

Kunde inte testa det här, men kanske det blev fina fisken :)

Medlem sedan feb. 20011 498 inlägg
#7

Jag har för mig att jag har testat med inner join med utan resultat. Det går segt ändå. Men ska testa den när jag kommer hem.

Medlem sedan dec. 200012 464 inlägg
#8

Du får börja titta på indexeringen.

Använd explain och börja analysera.

Medlem sedan feb. 20011 498 inlägg
#9

När jag kör sql-frågan direkt i databasen med hjälp av mysql-front så hänger sig hela datorn i 5 sekunder och sen visas resultatet.

Fält jag har indexerat är:

gastbok_inlagg
id (primary)
agare_id
gast_id

gastbok_svar
id (primary)
agare_id
gast_id
inlagg_id

members
id (primary)

LarsG skrev:

Använd explain och börja analysera.

Hur gör man det?
Någon som kan ge ett exempel?

Medlem sedan dec. 20003 887 inlägg
#10

Det här med index

Medlem sedan feb. 20011 498 inlägg
#11

Läste den där sidan men den hjälpte inte mig så mycket.

Ändrade i sql-frågan lite och skrev så här:

	SQL = " SELECT gi.id, gi.datum, gi.gast_id, gi.text, gi.last, m.username, m.bild, gs.text " & _
	" FROM gastbok_inlagg gi inner join members m on gi.gast_id = m.id" & _
	" [B]inner join[/B] gastbok_svar gs ON gs.inlagg_id = gi.id " & _
	" WHERE gi.agare_id = " & idnr & _
	" ORDER BY gi.id desc"

Då går den hur snabbt som helst, inga problem alltså, men när jag ändrar den så som jag egentligen vill ha:

	SQL = " SELECT gi.id, gi.datum, gi.gast_id, gi.text, gi.last, m.username, m.bild, gs.text " & _
	" FROM gastbok_inlagg gi inner join members m on gi.gast_id = m.id" & _
	" [B]left outer join[/B] gastbok_svar gs ON gs.inlagg_id = gi.id " & _
	" WHERE gi.agare_id = " & idnr & _
	" ORDER BY gi.id desc"

Denna sql-sats tar alltså flera sekunder att ladda + att datorn hänger sig under den tiden.

Medlem sedan feb. 20011 498 inlägg
#12

Inget som vet hur man kan åtgärda det?

Medlem sedan feb. 20011 498 inlägg
#13

Är det verklingen ingen som vet?

260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)