/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
?Mere end 1 milion poster i Access DB
Fra : Ukendt


Dato : 18-05-07 10:36

Hej,

Jeg har en Access/SQL database med 8 tabeller som hver indeholder mellem en
og halv million poster i 11 kolonner.
For at undgå buffer overflow på ISP serveren http://www.fasthosts.co.uk/ er
jeg nødt til at vise database indholdet i blokke på ca. 7.000 poster, men
hvis jeg foretager en søgning (som f.eks. WHERE Nat = 'DENMARK') i en
tabel får jeg i de fleste tilfælde ASP-timeout før søgeresultatet vises, jeg
henter kun de nødvendige kolonner, og søgningen skulle resultere i ca. 100
poster.
Har nogen i gruppen en løsning på at håndtere mange database poster med
Access/SQL?

God weekend
Henning



 
 
Brian B. Christensen (18-05-2007)
Kommentar
Fra : Brian B. Christensen


Dato : 18-05-07 12:18

On Fri, 18 May 2007 11:36:22 +0200, "Henning Smed" <henning snabela
smeds.dk> wrote:

>Har nogen i gruppen en løsning på at håndtere mange database poster med
>Access/SQL?

Løsningen må være at definere de korrekte keys og så bruge dem i din
SQL. Så vil en søgning gennem 1 mill. records ikke tage så tang tid at
den får en time-out.

/Brian

Michael Zedeler (18-05-2007)
Kommentar
Fra : Michael Zedeler


Dato : 18-05-07 15:19

On Fri, 2007-05-18 at 11:36 +0200, Henning Smed wrote:
> Jeg har en Access/SQL database med 8 tabeller som hver indeholder mellem en
> og halv million poster i 11 kolonner.
> For at undg buffer overflow p ISP serveren http://www.fasthosts.co.uk/ er
> jeg ndt til at vise database indholdet i blokke p ca. 7.000 poster, men
> hvis jeg foretager en sgning (som f.eks. WHERE Nat = 'DENMARK') i en
> tabel fr jeg i de fleste tilflde ASP-timeout fr sgeresultatet vises, jeg
> henter kun de ndvendige kolonner, og sgningen skulle resultere i ca. 100
> poster.
> Har nogen i gruppen en lsning p at hndtere mange database poster med
> Access/SQL?

Egentlig ikke andet end at man skal lade være. Skift til en rigtig
database.

Mvh. Michael.



Jørn Andersen (18-05-2007)
Kommentar
Fra : Jørn Andersen


Dato : 18-05-07 17:28

On Fri, 18 May 2007 16:18:35 +0200, Michael Zedeler <michael@zedeler.dk>
wrote:

>> Har nogen i gruppen en lsning p at hndtere mange database poster med
>> Access/SQL?
>
>Egentlig ikke andet end at man skal lade være. Skift til en rigtig
>database.

Hvis ikke der er ret mange brugere, er der sådan set ingen akut grund
til at skifte.
Spørgsmålet er jo, hvor flaskehalsen ligger, og hvis den ikke ligger hos
selve databasen, men i db-opbygningen, hardware eller andet, så er det
dér man skal sætte ind.


Mvh. Jørn

--
Jørn Andersen,
Brønshøj

Jørn Andersen (18-05-2007)
Kommentar
Fra : Jørn Andersen


Dato : 18-05-07 17:25

On Fri, 18 May 2007 11:36:22 +0200, "Henning Smed" <henning snabela
smeds.dk> wrote:

>Jeg har en Access/SQL database med 8 tabeller som hver indeholder mellem en
>og halv million poster i 11 kolonner.
>For at undgå buffer overflow på ISP serveren http://www.fasthosts.co.uk/ er
>jeg nødt til at vise database indholdet i blokke på ca. 7.000 poster, men
>hvis jeg foretager en søgning (som f.eks. WHERE Nat = 'DENMARK') i en
>tabel får jeg i de fleste tilfælde ASP-timeout før søgeresultatet vises, jeg
>henter kun de nødvendige kolonner, og søgningen skulle resultere i ca. 100
>poster.
>Har nogen i gruppen en løsning på at håndtere mange database poster med
>Access/SQL?

1) Vær sikker på, at de felter, du søger på, er indekserede.
2) Det vil helt sikkert gå hurtigere, hvis du putter nationaliteter i en
separat tabel og så søger på et id-nr i stedet - fx:
... WHERE NatId = 45
3) Hvis det stadig tager lang tid, så kan det være en workaround at
sætte timeout-tiden op. Men det kan ikke anbefales - det er et tegn på,
at der er noget galt, hvis man skal ty til den slags kneb.


Good luck!

--
Jørn Andersen,
Brønshøj

Ukendt (19-05-2007)
Kommentar
Fra : Ukendt


Dato : 19-05-07 08:02


"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
news:dhkr43d8bjrh5el0vf4arsrq75nfefstm7@4ax.com...
> On Fri, 18 May 2007 11:36:22 +0200, "Henning Smed" <henning snabela
> smeds.dk> wrote:

>>Har nogen i gruppen en løsning på at håndtere mange database poster med
>>Access/SQL?
>
> 1) Vær sikker på, at de felter, du søger på, er indekserede.
> 2) Det vil helt sikkert gå hurtigere, hvis du putter nationaliteter i en
> separat tabel og så søger på et id-nr i stedet - fx:
> ... WHERE NatId = 45
> 3) Hvis det stadig tager lang tid, så kan det være en workaround at
> sætte timeout-tiden op. Men det kan ikke anbefales - det er et tegn på,
> at der er noget galt, hvis man skal ty til den slags kneb.

Tak for jeres svar,
Det største problem ser ud til at være min ISP http://www.fasthosts.co.uk/ ,
hvis jeg tester et par opslag med http://www.cliche.dk som ISP får jeg ingen
timeout, se:

http://www.smeds.dk/vms/vms-dk.asp og http://www.smeds.dk/vms/vms.asp

opslagene tager selvfølgelig lang tid men det kan jeg leve med.

God weekend
Henning



Jørn Andersen (19-05-2007)
Kommentar
Fra : Jørn Andersen


Dato : 19-05-07 12:30

On Sat, 19 May 2007 09:01:42 +0200, "Henning Smed Sørensen" <Henning
snabela smeds dot dk> wrote:

>http://www.smeds.dk/vms/vms.asp

>opslagene tager selvfølgelig lang tid men det kan jeg leve med.

... WHERE Latitude LIKE '%58,6%'

Jeg kan se 2 problmer med den:
1) At du bruger et tekstfelt til en talværdi - det vil under *alle*
omstændigheder give en langsommere forespørgsel.

2) Selv hvis du bruger et tekstfelt, vil du ikke kunne udnytte
indekseringen, når du har wildcard forrest - hvilket i dette tilfælde da
heller ikke er nødvendigt:
... WHERE Latitude LIKE '58,6%'



Mvh. Jørn

--
Jørn Andersen,
Brønshøj

Ukendt (20-05-2007)
Kommentar
Fra : Ukendt


Dato : 20-05-07 08:32


"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
news:4fmt43hj0vtkb3e2ell0gpvrd8c9ovhmee@4ax.com...
> On Sat, 19 May 2007 09:01:42 +0200, "Henning Smed Sørensen" <Henning
> snabela smeds dot dk> wrote:
>
>>http://www.smeds.dk/vms/vms.asp
>
>>opslagene tager selvfølgelig lang tid men det kan jeg leve med.
>
> ... WHERE Latitude LIKE '%58,6%'
>
> Jeg kan se 2 problmer med den:
> 1) At du bruger et tekstfelt til en talværdi - det vil under *alle*
> omstændigheder give en langsommere forespørgsel.

Længde og breddegrad er defineret som tal i databasen, grunden til at jeg
anvender "LIKE 'xx,x%'" er at jeg ikke kender SQL syntaksen for at søge alle
poster mellem værdierne 58,2 og 58,4 eller værdier større end 58,6 når der
anvendes komma som decimal separator.
Komma i værdien giver syntaks fejl. (f.eks WHERE Latitude BETWEEN 58,6 AND
58,7)

> 2) Selv hvis du bruger et tekstfelt, vil du ikke kunne udnytte
> indekseringen, når du har wildcard forrest - hvilket i dette tilfælde da
> heller ikke er nødvendigt:
> ... WHERE Latitude LIKE '58,6%'
>
Tak det har jeg ændret.

Mvh
Henning



Jørn Andersen (20-05-2007)
Kommentar
Fra : Jørn Andersen


Dato : 20-05-07 18:50

On Sun, 20 May 2007 09:31:41 +0200, "Henning Smed Sørensen" <Henning
snabela smeds dot dk> wrote:

>"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
>news:4fmt43hj0vtkb3e2ell0gpvrd8c9ovhmee@4ax.com...
>> ... WHERE Latitude LIKE '%58,6%'
>>
>> Jeg kan se 2 problmer med den:
>> 1) At du bruger et tekstfelt til en talværdi - det vil under *alle*
>> omstændigheder give en langsommere forespørgsel.
>
>Længde og breddegrad er defineret som tal i databasen

Så burde det give en syntaks-fejl, når du har ' ' om værdierne i din
forespørgsel. Er du sikker?

>grunden til at jeg
>anvender "LIKE 'xx,x%'" er at jeg ikke kender SQL syntaksen for at søge alle
>poster mellem værdierne 58,2 og 58,4 eller værdier større end 58,6 når der
>anvendes komma som decimal separator.
>Komma i værdien giver syntaks fejl. (f.eks WHERE Latitude BETWEEN 58,6 AND
>58,7)

Prøv med punktum i stedet for komma.



Mvh. Jørn

--
Jørn Andersen,
Brønshøj

Ukendt (20-05-2007)
Kommentar
Fra : Ukendt


Dato : 20-05-07 20:22


"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
news:4g21539ntkat0uj6ok8jmkvo3kta5j516d@4ax.com...
>>anvender "LIKE 'xx,x%'" er at jeg ikke kender SQL syntaksen for at søge
>>alle
>>poster mellem værdierne 58,2 og 58,4 eller værdier større end 58,6 når der
>>anvendes komma som decimal separator.
>>Komma i værdien giver syntaks fejl. (f.eks WHERE Latitude BETWEEN 58,6 AND
>>58,7)
>
> Prøv med punktum i stedet for komma.

Tak Jørn,

Punktum som decimal separator.fungerer.

/Henning



Ukendt (19-05-2007)
Kommentar
Fra : Ukendt


Dato : 19-05-07 10:04

"Henning Smed" <henning snabela smeds.dk> skrev i
> og søgningen skulle resultere i ca. 100 poster.
De to link du har opgivet giver langt over 100 poster...
Bjarne



Michael Zedeler (20-05-2007)
Kommentar
Fra : Michael Zedeler


Dato : 20-05-07 10:14

On Sun, 2007-05-20 at 09:31 +0200, Henning Smed Sørensen wrote:
> "Jrn Andersen" <jorn@jorna.dk> skrev i en meddelelse
> news:4fmt43hj0vtkb3e2ell0gpvrd8c9ovhmee@4ax.com...
> > On Sat, 19 May 2007 09:01:42 +0200, "Henning Smed Srensen" <Henning
> > snabela smeds dot dk> wrote:
> >
> >>http://www.smeds.dk/vms/vms.asp
> >
> >>opslagene tager selvflgelig lang tid men det kan jeg leve med.
> >
> > ... WHERE Latitude LIKE '%58,6%'
> >
> > Jeg kan se 2 problmer med den:
> > 1) At du bruger et tekstfelt til en talvrdi - det vil under *alle*
> > omstndigheder give en langsommere foresprgsel.
>
> Lngde og breddegrad er defineret som tal i databasen, grunden til at jeg
> anvender "LIKE 'xx,x%'" er at jeg ikke kender SQL syntaksen for at sge alle
> poster mellem vrdierne 58,2 og 58,4 eller vrdier strre end 58,6 nr der
> anvendes komma som decimal separator.
> Komma i vrdien giver syntaks fejl. (f.eks WHERE Latitude BETWEEN 58,6 AND
> 58,7)

SÃ¥ er det da oplagt at konvertere datatype til tal og blot bruge numerisk sammenligning.

Mvh. Michael.



Michael Zedeler (20-05-2007)
Kommentar
Fra : Michael Zedeler


Dato : 20-05-07 10:16

On Sun, 2007-05-20 at 09:31 +0200, Henning Smed Sørensen wrote:
> "Jrn Andersen" <jorn@jorna.dk> skrev i en meddelelse
> news:4fmt43hj0vtkb3e2ell0gpvrd8c9ovhmee@4ax.com...
> > On Sat, 19 May 2007 09:01:42 +0200, "Henning Smed Srensen" <Henning
> > snabela smeds dot dk> wrote:
> >
> >>http://www.smeds.dk/vms/vms.asp
> >
> >>opslagene tager selvflgelig lang tid men det kan jeg leve med.
> >
> > ... WHERE Latitude LIKE '%58,6%'
> >
> > Jeg kan se 2 problmer med den:
> > 1) At du bruger et tekstfelt til en talvrdi - det vil under *alle*
> > omstndigheder give en langsommere foresprgsel.
>
> Lngde og breddegrad er defineret som tal i databasen, grunden til at jeg
> anvender "LIKE 'xx,x%'" er at jeg ikke kender SQL syntaksen for at sge alle
> poster mellem vrdierne 58,2 og 58,4 eller vrdier strre end 58,6 nr der
> anvendes komma som decimal separator.
> Komma i vrdien giver syntaks fejl. (f.eks WHERE Latitude BETWEEN 58,6 AND
> 58,7)

Sorry. Overså at det allerede *er* tal. Operatorerne til numerisk
sammenligning er <, >, <=, >=, = og <>.

SÃ¥ du kan blot skrive

SELECT *
FROM mintabel
WHERE noget < 10 and noget > 8

Dette vælger alle rækker hvor værdien noget er i intervallet (8; 10).

Mvh. Michael.



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste