webForumDet fria alternativet

Optimering

3 svar · 253 visningar · startad av Palle

PalleMedlem sedan apr. 20003 174 inlägg
#1

Hej,

Jag har fått ett system i ASP/MS SQL från en kund som nu ska optimeras då det är väldigt tunggrott att arbeta i med långa väntetider medans systemet arbetar.
Jag har nu fått bukt på det mesta men presentationen av statistiken tar fortfarande 40-50 sek att exekvera, och så vill jag inte ha det.

Skulle nu behöva tips på hur, om det är möjligt, jag smidigast optimerar följande sql-satser. :)

[red]Function unikahits()

	Set RecSet = Connect.Execute("SELECT COUNT(hit) AS unika FROM hits WHERE ipadd <> N'xxx.xx.xxx.xx' AND hit = 1")
		unikahits = RecSet("unika")
		RecSet.Close
	Set RecSet = Nothing

End Function

Function hits()

	Set RecSet = Connect.Execute("SELECT COUNT(hit) AS hits FROM hits WHERE ipadd <> N'xxx.xx.xxx.xx'")
		hits = RecSet("hits")
		RecSet.Close
	Set RecSet = Nothing

End Function

Function akcv()

	Set RecSet = Connect.Execute("SELECT COUNT(JE_candidate_cv_id) AS akcv FROM JE_candidate_cv WHERE JE_candidate_cv_status = 1")
		akcv = RecSet("akcv")
		RecSet.Close
	Set RecSet = Nothing

End Function

Function anscv()

	Set RecSet = Connect.Execute("SELECT COUNT(JE_Application_cvprofileid) AS anscv FROM JE_Application WHERE JE_Application_cvprofileid > 0")
		anscv = RecSet("anscv")
		RecSet.Close
	Set RecSet = Nothing

End Function

Function ans()

	Set RecSet = Connect.Execute("SELECT COUNT(JE_Application_cvprofileid) AS ans FROM JE_Application")
		ans = RecSet("ans")
		RecSet.Close
	Set RecSet = Nothing

End Function[/red]
LarsGMedlem sedan dec. 200012 464 inlägg
#2

Har du tittat på resultatet när du har set showplan on?

Vilka index har du?

Hur stora är tabellerna?

Hur är fördelningen av data?

De två första frågorna går att kombinera till en med

select count(*), sum(case when hit = 1 then 1 else 0 end) 
FROM hits 
WHERE ipadd <> N'xxx.xx.xxx.xx'

Varför nchar?

PalleMedlem sedan apr. 20003 174 inlägg
#3

>> Har du tittat på resultatet när du har set showplan on?
Jag är ganska färsk på MS SQL så här hänger jag tyvärr inte med på vad du menar. :r

>> Vilka index har du?
Vad jag kan se är det bara primärnyckeln som är indexerad.

>> Hur stora är tabellerna?
Minsta tabellen: ca 5000 poster
Största tabellen: ca 900000 poster

>> Hur är fördelningen av data?
Hur menar du?

>> Varför nchar?
Ingen aning, jag har inte gjort någonting med den här koden ännu utan detta är fortfarande kundens orginalkod.

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Om man har satt

Set showplan on

så innebär att man får se hur frågan kommer att utföras. Den visar om man använder index eller inte och i vilken ordning tabellerna läses (om man har joinar.)

Med fördelning så menar jag hur många poster som uppfyller villkoret.

T.ex om 95% av raderna i tabellen hits har värdet 1 i kolumnen hit så har man ingen nytta av ett index på den kolumnen men däremot om förhållandena är de motsatta så är ett index väldigt värdefullt.

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