/ 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
Mine database INSERTs er for langsomme
Fra : Christian R. Larsen


Dato : 27-06-06 12:26

Hej

Er der ikke nogen, der kan komme med et godt bud på en måde at lave hurtige
INSERTs på i en MYSQL database?

Min applikation er lavet i ASP VBSCRIPT og MySQL-databasen er v. 4.x



 
 
Jens Gyldenkærne Cla~ (27-06-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-06-06 13:53

Christian R. Larsen skrev:

> Min applikation er lavet i ASP VBSCRIPT og MySQL-databasen er
> v. 4.x

Fortæl hvordan du gør nu - ellers er det nærmest umuligt at hjælpe.

Hvordan ser dine tabeller ud, i hvilket omfang benytter du indeks
og hvordan indsætter du data?
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Christian R. Larsen (27-06-2006)
Kommentar
Fra : Christian R. Larsen


Dato : 27-06-06 14:13


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns97EF97740DC92jcdmfdk@gyrosmod.dtext.news.tele.dk...
> Christian R. Larsen skrev:
>
> > Min applikation er lavet i ASP VBSCRIPT og MySQL-databasen er
> > v. 4.x
>
> Fortæl hvordan du gør nu - ellers er det nærmest umuligt at hjælpe.
>
> Hvordan ser dine tabeller ud, i hvilket omfang benytter du indeks
> og hvordan indsætter du data?

Jeg laver en INSERT som denne i min kode:

-------------------------

Opendatabase
{Indeholder connectstring osv...}

sql="INSERT INTO Artikler " & _
"(ArtikelHeader, Artikel, ArtikelSummary, ArtikelType, LinkType,
Publiceret, Oprettet, PubliceringStart, PubliceringSlut, Omraade, Username,
Author, Author_email, Prioritet, ErNyhed, ErUndermenu) " & _
"VALUES ('" & xArtikelHeader & "','" & xArtikel & "','" & xArtikelSummary
& "', '" & xArtikelType & "', '" & xLinkType & "', 0, '" & xOprettet & "',
'" & xPubliceringStart & "','" & xPubliceringSlut & "','" & xOmraade & "',"
& _
"'" & session("Username") & "','" & xAuthor & "','" & xAuthor_email &
"','" & xPrioritet & "','" & xErNyhed & "','" & xErUndermenu & "');"

db.execute(sql)

Closedatabase

--------------
Problemet er, at webapplikationen når at time ud, hvis feltet "artikel" er
for stort (det går galt allerede ved ca. 8-9 kb).

Til gengæld kan jeg fra mit phpmyadmin foretage den samme update på få
millisekunder.

Hvordan kan det være?
-------

Min tabel ser ud som dette:

ArtikelID int(11) auto_increment
ArtikelHeader varchar(255)
Artikel longtext
ArtikelSummary varchar(255)
ArtikelType varchar(50)
Linktype varchar(50)
Publiceret tinyint(6)
Oprettet datetime
PubliceringStart date
PubliceringSlut date
Omraade varchar(100)
Author varchar(255)
Author_email varchar(255)
Prioritet varchar(100)
Username varchar(255)
ErNyhed tinyint(4)
ErUndermenu tinyint(4)

Der er indes på følgende felter:
Omraade, ArtikelID, Publiceret og Oprettet



Jørn Andersen (27-06-2006)
Kommentar
Fra : Jørn Andersen


Dato : 27-06-06 14:16

On Tue, 27 Jun 2006 14:53:18 +0200, Jens Gyldenkærne Clausen
<jens@gyros.invalid> wrote:

>i hvilket omfang benytter du indeks

Hvad er de gode tommelfinger-regler for, hvordan man bruger indeks?
Nu har jeg sjældent voldsomt store databaser, men jeg plejer kun at
indeksere Auto-nummer-felter.
Men der kan måske hentes noget ved at gøre det anderledes?

NB: bruger mest MS Access.

Mvh. Jørn

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

Jens Gyldenkærne Cla~ (27-06-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-06-06 14:49

Jørn Andersen skrev:

> Hvad er de gode tommelfinger-regler for, hvordan man bruger
> indeks?

Det er en afvejning af hvordan databasen bruges.

Generelt kan et indeks gøre søgninger hurtigere mens dataændringer
bliver langsommere. Derfor er fordelingen mellem udvælgelser og
ændringer noget af det første man skal se på.

Hvis man kun sjældent har dataændringer, har man "råd" til flere
indeks end hvis man hele tiden opdaterer data - specielt hvis der
er flere brugere der opdaterer.

Dernæst skal man se på hvor indeks kan gøre en forskel. De felter
der er relevante at indeksere er dem der søges på eller sorteres
efter, samt felter i join-udtryk. Da joins ofte mellem tabeller der
i forvejen er relateret, vil den ene side (primærnøglen i
modertabellen) i forvejen have et indeks (da primærnøglen altid er
indekseret.

Mht. søgninger skal man huske at et indeks ikke kan bruges til
noget hvis man laver wildcard-søgninger med jokertegn i starten
(altså WHERE felt LIKE '%foo%' eller WHERE felt LIKE '%@mail.dk')
- sådan en søgning udføres ved at løbe hele tabellen igennem, og et
evt. indeks bliver slet ikke brugt.


> Nu har jeg sjældent voldsomt store databaser,

Samme her - og det er både godt og skidt. Det er godt, fordi det
ikke betyder det store om indekseringen er lavet fornuftigt når der
arbejdes på små datamængder. Men det er skidt fordi man så har
svært ved at bedømme om en given indeksering er effektiv alene ud
fra en subjektiv hastighedsvurdering.

Jeg krydsposter med opfølgning til databasegruppen - der sidder
nogle garvede folk der nok kan komme med nogle flere bud på
indekseringsstrategier.

Krydspostet til 2 grupper, opfølgning (FUT) til:
<news:dk.edb.database>
Ordforklaringer: <http://usenet.dk/ord/lokal.html#fut>
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177483
Tips : 31964
Nyheder : 719565
Indlæg : 6408395
Brugere : 218884

Månedens bedste
Årets bedste
Sidste års bedste