SQLite.NET-Leistung Verwenden von SQLiteParameter mit LIKE-Operator

8

Ich habe ein Problem mit SQLiteParameters und dem LIKE-Operator in einer SQLite-Abfrage. Hier ist ein Codeschnipsel und ich entschuldige mich, wenn ich nicht genug Code hier habe. Wenn das der Fall ist, kann ich einfach mehr posten.

Schlechte Leistung:

%Vor%

Tolle Leistung:

%Vor%

Anderer wichtiger Code:

%Vor%

Das erste Beispiel dauert 700 ms zur Ausführung, was mein Vorgesetzter für nicht akzeptabel hält. Das zweite Beispiel benötigt 7 ms zur Ausführung. Warum der Unterschied? Gibt es etwas, das ich völlig falsch mache, um mir den Status eines Neulings zu verdienen?

Vielen Dank im Voraus!

    
Terry 21.06.2011, 15:18
quelle

3 Antworten

2

Also, ich glaube, ich habe es auf ein Problem mit System.Data.SQLite beschränkt. Ich habe den folgenden Code in C ++ ausprobiert:

%Vor%

Sowohl die Funktionen PoorPerformance als auch GoodPerformance ergaben 1 ms mit 11 Zeilen. Gibt es etwas anderes zwischen dem, was ich getan habe, und was hätte ich mit System.Data.SQLite machen sollen? Hoffentlich ist dies nur etwas, was ich als Fehler mit System.Data.SQLite melden und vielleicht meinen eigenen Fix anwenden kann.

    
Terry 08.07.2011, 15:27
quelle
1

Da ich keinen Unterschied zwischen den beiden Abfragen sehen kann, aber die Tatsache, dass man sqlite parameter und die andere eine komplette sql-Anweisung als String verwendet, google ich einfach dein Problem und stolperte über das .

Dort gibt es an, dass es im SQLiteCommand-Objekt eine Eigenschaft namens ParameterCheck , was zu Leistungseinbußen führen kann.

Sie könnten versuchen, Ihren Code neu zu schreiben, um ein SQLiteCommand-Objekt zu übergeben und die ParameterCheck-Eigenschaft auf false festzulegen. Ich denke, du solltest etwas schneller werden.

Zumindest ist es einen Versuch wert:)

    
Gambrinus 05.07.2011 16:43
quelle
0

Ich hatte auch Leistungsprobleme mit System.Data.SQLite, von denen ich einige ansprechen und verbessern konnte und andere nicht.

Vor kurzem habe ich jedoch diese alternative C # SQLite-Bibliothek entdeckt: Ссылка

Es hat mir keine Performance-Probleme gegeben, und ich habe System.Data.SQLite tatsächlich durch dieses in einem bestehenden Projekt ersetzt (fast keine Änderungen in der Syntax - ich habe mehr oder weniger buchstäblich nur die DLL und die using-Direktive ersetzt ... dort Es waren ein paar Zeilen, in denen ich etwas tippen musste), und es hat sich wunderbar gelohnt. Es gab Zeiten, in denen ich in der Reihenfolge von Sekunden mit System.Data.SQLite wartete, und jetzt sind die Ausführungen sofort.

    
user1032657 15.04.2012 05:16
quelle