webForumDet fria alternativet

Optimering: DB-connect

25 svar · 344 visningar · startad av Lukaspojken

LukaspojkenMedlem sedan maj 20011 312 inlägg
#1

Vilken av dessa går snabbast egentligen?


Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open ("driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("minDB.mdb"))
ELler

ConnString = "driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("minDB.mdb")"
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open ConnString

Om du första går snabbare vilket jag tror...varför kör man då den nedersta varianten ibland...?

------------------
Alltid lär man sig något nytt varje dag...

LukaspojkenMedlem sedan maj 20011 312 inlägg
#2

Såg att jag var lite snabb i tangenttrycken där...så här ska det stå

Om den första går snabbare vilket jag tror...varför kör man då den nedersta varianten ibland...?

------------------
Alltid lär man sig något nytt varje dag...

PatrikBMedlem sedan mars 20002 836 inlägg
#3

Eh, gör dig nog lite besviken. INGEN AV DEM!!!!

Så här bör du öppna mot Access:

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("minDb.mdb")

Denna är typ 10 ggr snabbare i recset looparna än vad den gamla Access drivern du använder dig av är.

cya,
PatrikB

------------------
*Det tar sig sa han som hade eld i håret*

[Redigerat av PatrikB den 19 jul 2001]

LukaspojkenMedlem sedan maj 20011 312 inlägg
#4

Vad är det för skillnad på den och den översta? Blir det bättre prestanda då?

------------------
Alltid lär man sig något nytt varje dag...

PatrikBMedlem sedan mars 20002 836 inlägg
#5

Som jag sa.
Den varianten jag gav dig. här uppe, är 10 ggr snabbar eller ännu snabbare än vad den gamla accessdrivern du kör är.

cya,
PatrikB

------------------
*Det tar sig sa han som hade eld i håret*

PatrikBMedlem sedan mars 20002 836 inlägg
#6

Läs denna artikel så förstår du varför den är snabbare:
http://www.4guysfromrolla.com/webtech/063099-1.shtml

cya,
PatrikB

------------------
*Det tar sig sa han som hade eld i håret*

kristofferMedlem sedan juni 20001 257 inlägg
#7

Det var dock inte svar på frågan. Att lagra strängen i en variabel gentemot att inte göra det torde ju vara mer prestandakrävande, åtminstonde teoretiskt sett.

------------------
http://www.tavlingar.se

LukaspojkenMedlem sedan maj 20011 312 inlägg
#8

Patrik tog dock två flugor i en smäll...:) Jag antog att det var så...annars skulle han förmodligen skrivet på det andra sättet...

------------------
Alltid lär man sig något nytt varje dag...

PatrikBMedlem sedan mars 20002 836 inlägg
#9

Jo, precis ... men kunde inte låta bli att "tipsa" om att han använder fel driver för att kontakta db'n, som såå många andra oxå gör.

Ska vi vara än mer teoretiska så ska inte ens Server.MapPath("minDB.mdb") vara med, utan man ska istället skriva den direkta sökvägen "hårdkodat" så att säga.

...;Data Source=X:\webs\myweb\minDB.mdb;"

för att anropa server objektet tar ju oxå sin lilla tid ... ett antal micro sekunder för varje sådant anrop *ler*

cya,
PatrikB

------------------
*Det tar sig sa han som hade eld i håret*

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#10

Vad bra det är att gå in på det här forumet.
Lukaspojken frågar om sådant man själv undrar lite över och sen svarar såna som PatrikB, emission, LarsG, @nders och andra gurus..

Man lär sig en del faktiskt. :)

------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/

T_CodezMedlem sedan juli 2001458 inlägg
#11

Hur är dessa kopplingar prestandamässigt kontra en system DSN koppling?

Bortsätt från att du måste ha tillgång till servern, givetvis.

------------------
There is no Tomorrow...

erkaMedlem sedan dec. 19996 522 inlägg
#12

Är det snabbare med en DSN ?

------------------
Våga lek med dig själv

LukaspojkenMedlem sedan maj 20011 312 inlägg
#13

Är man osäker vad man ska skriva istället för Server.MapPath("minDB.mdb") så kan man köra en response.write och sen bara göra en hel sträng av det...

Jag har dock också hört att & ska ta lite prestanda när man för samman två strängar. Därför tjänar man lite prestanda där också.

Och har man 2-3 db-kopplingar på en sida så blir det några mikrosekunder...tack PatrikB

------------------
Alltid lär man sig något nytt varje dag...

PaceMedlem sedan juni 20019 024 inlägg
#14

Varför inte göra så här i början av dokumentet:

strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("minDb.mdb")

... och sedan skriva:

Connect.Open strConnection

------------------
Peter D

LukaspojkenMedlem sedan maj 20011 312 inlägg
#15

Jag använder en sub

Sub DB_koppling	'Databas-kopplingen istället för include

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\genfs2\minDB.mdb"

End Sub

Och tack vare Patrik använder jag inte Server.MapPath.

Sen när behöver själva kopplingen skriver man bara:
DB_koppling

------------------
Alltid lär man sig något nytt varje dag...

PaceMedlem sedan juni 20019 024 inlägg
#16

Japp, så kan man också göra (det är det som är bra med programmering)...

Fast använder man Server.MapPath en gång i början av dokumentet märker man ingen skillnad, åtminstone gör inte jag det.

------------------
Peter D

LukaspojkenMedlem sedan maj 20011 312 inlägg
#17

Varför använda något du inte behöver?

------------------
Alltid lär man sig något nytt varje dag...

PaceMedlem sedan juni 20019 024 inlägg
#18

Varför programmera över huvud taget? ;)

Jag vet inte sökvägen på mitt webhotell ännu, så därför använder jag det fortfarande :)

------------------
Peter D

EclipseMedlem sedan juli 20003 825 inlägg
#19

Hmm...!? Att så lite kan göra så stor skillnad!? Tack för tipset! Man kan stillsamt undra varför ingen skrivit om detta tidigare...

Med det tidigare tillvägagångssättet kunde vi inte använda flera databaser hos vår ISP utan att pröjsa dom 300 spänn för en sketen DSN koppling... Med denna OLEDB fungerar sever.mapPath! :-)

Dessutom, 'i en tråd nästgårds' (typ häromdan) sa nån att en DSN-less koppling är snabbare pga man slipper gå genom registret på servern...

Det är väl hugget som stucket, dagens datorer är så snabba att det är bättre att lägga energi på annat än just själva kopplingen...

------------------
OLR WebAdmin

PaceMedlem sedan juni 20019 024 inlägg
#20

Man kan stillsamt undra varför ingen skrivit om detta tidigare...

Kanske för att ingen har frågat? ;)

------------------
Peter D

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