Zum Beispiel möchten die Nutzer unserer App nach Produkten suchen, indem sie ein Schlüsselwort von productName eingeben.
Die Products-Tabelle der SQL Server-Datenbank enthält ca. 10 Millionen Datensätze.
Gibt es bessere und leistungsfähigere Suchmethoden anstelle von productName.Contains ("keyword") mit asp.net C # zu implementieren?
Ich verwende jetzt gespeicherte Prozeduren, aber linq to sql oder entity framework sind auch eine Möglichkeit.
Wenn Sie eine bessere Leistung wünschen, können Sie sich eine Volltextsuche ansehen. Beachten Sie, dass dies derzeit von LINQ to SQL nicht unterstützt wird. Sie können jedoch SQL in einer gespeicherten Prozedur schreiben und die gespeicherte Prozedur von Ihrer Anwendung aus aufrufen. Die akzeptierte Antwort für diese StackOverflow-Post empfiehlt, diesen Artikel zu lesen >.
Sie sollten nie mehr Daten von Ihrer Datenbank abrufen, als Sie benötigen. Daher ist es am besten, wenn Sie Ihre Zeilen innerhalb der Datenschicht (dh Ihrer gespeicherten Prozedur) einschränken. Sie können dies tun, indem Sie nur übereinstimmende Zeilen zurückgeben:
%Vor%Dabei ist @keyword ein Parameter für Ihre Speicherprozedur.
Beachten Sie jedoch, dass die Leistung mit LIKE langsam sein kann, da sie die gesamte Tabelle lesen muss. Sie können die Leistung besser steigern, indem Sie Produkte, die starten , mit dem Schlüsselwort
vergleichen %Vor%Hinweis Ich habe das '%' vor @keyword entfernt. Dadurch kann SQL Server einen Index für die ProductName-Spalte verwenden, um die Zeilen viel schneller zu finden!
Für weitere Hilfe, bitte posten Sie Ihre gespeicherte Prozedur ...
Könnte Overkill sein, aber schau mal lucene.net , ich glaube es ist was Stack Overflow für seine Suche benutzt
Tags und Links sql-server c# asp.net