Wenn wir SQL entwickeln, werden wir feststellen, dass die ASP-Ausführung manchmal langsam ist. Wir können die folgenden Methoden verwenden, um die Ausführungseffizienz zu verbessern.
[b]Methode 1: Versuchen Sie, komplexes SQL anstelle einer Menge einfacher SQL zu verwenden[/b]
Für dieselbe Transaktion kann eine komplexe SQL effizienter ausgeführt werden als eine Reihe einfacher SQL-Abfragen. Wenn mehrere Abfragen vorliegen, müssen Sie gut in der Verwendung von JOIN sein.
oRs=oConn.Execute(Wählen Sie * AUS Büchern)
während nicht ors.Eof
strSQL = Select * FROM Authors Where AuthorID=&oRs(AuthorID) ors2=oConn.Execute(strSQL)
Response.write ors(Titel)&>>&oRs2(Name)&<br>
ors.MoveNext()
wenden
ist langsamer als der folgende Code:
strSQL=Wählen Sie Books.Title,Authors.Name FROM Books JOIN Authors ON aus. Authors.AuthorID=Books.AuthorID
ors=oConn.Execute(strSQL)
während nicht ors.Eof
Response.write ors(Titel)&>>&oRs(Name)&<br>
ors.MoveNext()
wenden
[b]Methode 2: Vermeiden Sie die Verwendung eines aktualisierbaren Recordsets[/b]
oRs=oConn.Execute(Select * FROM Authors Where AuthorID=17,3,3)
ors(Name)=DarkMan
ors.Update()
ist langsamer als der folgende Code:
strSQL = Autoren aktualisieren SET Name='DarkMan' Wobei AuthorID=17
oConn.Execute strSQL
[b]Methode 3: Versuchen Sie beim Aktualisieren der Datenbank, Batch-Updates zu verwenden[/b]
Formulieren Sie das gesamte SQL in einem großen Batch-SQL und führen Sie es auf einmal aus. Dies ist viel effizienter, als die Daten einzeln zu aktualisieren. Dadurch werden auch Ihre Anforderungen an die Transaktionsverarbeitung besser erfüllt:
strSQL=
strSQL=strSQL&SET XACT_ABORT ON/n;
strSQL=strSQL&BEGIN TRANSACTION/n;
strSQL=strSQL&Insert INTOorders(OrdID,CustID,OrdDat) VALUES('9999','1234',GETDATE())/n;
strSQL=strSQL&Insert INTO orderRows(OrdID,OrdRow,Item,Qty) VALUES('9999','01','G4385',5)/n;
strSQL=strSQL&Insert INTO orderRows(OrdID,OrdRow,Item,Qty) VALUES('9999','02','G4726',1)/n;
strSQL=strSQL&COMMIT TRANSACTION/n;
strSQL=strSQL&SET XACT_ABORT OFF/n;
oConn.Execute(strSQL);
Unter anderem teilt die Anweisung SET XACT_ABORT OFF SQL Server mit, dass die abgeschlossene Transaktion abgebrochen wird, wenn während der folgenden Transaktionsverarbeitung ein Fehler auftritt.
[b]Methode 4, Datenbankindex[/b]
Für die Felder, die in der Where-Klausel erscheinen, sollten Sie zunächst auch die Indizierung der zu sortierenden Felder in Betracht ziehen.
So erstellen Sie einen Index in MS Access: Wählen Sie die Tabelle aus, die in Access indiziert werden soll, klicken Sie auf „Design“ und legen Sie dann den Index des entsprechenden Felds fest.
So erstellen Sie einen Index in MS SQL Server: Wählen Sie im SQL Server Manager die entsprechende Tabelle aus, entwerfen Sie dann die Tabelle, klicken Sie mit der rechten Maustaste, wählen Sie Eigenschaften und wählen Sie Indizes/Schlüssel aus
[b]Methode 5: Vermeiden Sie es, das Textfeld zu groß zu machen[/b]
Wenn die Wertgröße der Zeichenfolge nicht festgelegt ist, ist die Verwendung von varchar besser als die Verwendung von char. Ich habe einmal ein Beispielprogramm gesehen, in dem das Feld als TEXT(255) definiert war, sein Wert jedoch oft nur 20 Zeichen betrug. Diese Datentabelle enthält 50.000 Datensätze, wodurch diese Datenbank sehr groß ist und große Datenbanken zwangsläufig langsamer sind.