webForumDet fria alternativet

Antalet SQL-satser - prestanda

7 svar · 231 visningar · startad av koltrasten

koltrastenMedlem sedan okt. 2002272 inlägg
#1

Hej!
Hur stor skillnad gör det prestandamässigt, med många SQL-satser. Jag har ett script som jag egentligen kan lösa med 1 SQL-sats men av säkerhetsskäl och överskådlighet borde det vara bättre att använda loopar och då blir det 12 stycken.

Gör det någon stor skillnad? Laddningstid, bandbredd, prestanda, etc.

(ASP+mySQL)

koltrastenMedlem sedan okt. 2002272 inlägg
#2

Ingen som kan? :OO

nikoMedlem sedan juni 20022 599 inlägg
#3

Det enkla svaret är naturligtvis att det alltid är bättre att köra en fråga än tolv frågor.

Liknelse: Om du vill ha tolv bananer. Går du ner till affären tolv ggr och köper en banan? Eller går du ner en gång och köper tolv bananer?

Hur mycket prestandavinsten sen är går inte att ge ett exakt svar på. Det beror på hur frågorna ser ut, overheaden som varje fråga har, hur mycket trafik som genereras av varje fråga, hur optimerade drivisarna är osv .. I vissa fall är det tolv ggr bättre.. ibland mer .. ibland mindre ..

Däremot förstår jag inte hur det kan vara säkerhetsmässigt bättre att ställa tolv frågor?

Om du ställer tolv frågor och tex den sjätte fallerar så är ju risken större att få en inkonsistent databas (iaf om du inte använder transaktioner). Fast du kanske använder ordet "säkerhet" i en annan betydelse?

koltrastenMedlem sedan okt. 2002272 inlägg
#4

Säkerhetsmässigt:
Om jag skall använda mig av 1 SQL-sats måste jag lagra saker i URL:en (querystring). Och om någon som är lite kunnig ändrar lite i adressfältet och trycker Enter kommer mitt script förstöras...

nikoMedlem sedan juni 20022 599 inlägg
#5

OK! Jag trodde det handlade om 12 vs 1 fråga i samma kontext (ASP-sida). Men vad du menar är att spara undan och skicka med frågor mellan olika sidor? I så fall kanske det ibland är bättre att dela upp databasfrågorna helt enkelt för att undvika en onödig komplexitet. Det beror ju helt på sammanghanget.

När det gäller säkerheten så är det väl en helt annan fråga. Du ska inte använda querystrings som folk kan gissa eller ändra i. Finns många varianter: koda om strängarna, koda om och använd hidden fields/sessions, använd HTTPS.

koltrastenMedlem sedan okt. 2002272 inlägg
#6

Jag kommer ha det i loopar på samma sida. Alltså förenklat:

' SQL-sträng med top 5
Do Until RecSet.EOF
     SQL = "blablabla WHERE ID=" & RecSet("idet")
     %><%=RecSet("Titel")%><%
Loop

Sedan har jag två sådana på sidan så det blir egentligen 2 vs. 12

Är det dåligt?

nikoMedlem sedan juni 20022 599 inlägg
#7

Är det dåligt?

Ingen aning. Det beror ju på vilka alternativen är. Eller egentligen vad "blablabla" står för.

Om det är en SELECT så kanske allt hade gått smidigare med en JOIN. Om det är en något annat (DELETE, UPDATE, INSERT) så kanske det finns något smartare beroende på vad det är du egentligen tänker göra. Fast det är inte säkert. MySQL har sina begränsningar.

koltrastenMedlem sedan okt. 2002272 inlägg
#8

Jag löste det med sessionsvariabler och fick ner det till 2 SQL-frågor

Tack för hjälpen! :bire

139 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)