2011-01-06 2 views
0

Ich habe eine Tabelle in meiner Datenbank und ich möchte wissen, ob einige Einträge wirklich dort vor ich wirklich dorthin gehen.zu wissen, dass einige Einträge in der Datenbank

Ich habe einige schnelle Anwendung und ich möchte die Anzahl der Anrufe gegen die Datenbank senken.

Ich habe dort etwa 35.000 Einträge in der Tabelle.

Ich dachte, einen Bloom-Filter mit einer Art Hash-Funktion zu haben.

Ist es eine gute Idee oder Sie haben andere Ideen, was Sie hier tun können?

Danke.

+0

35k Einträge sind nicht wirklich viel, eine gut gestaltete Tabelle soll, dass die Daten bis in kürzester Zeit aussehen kann. – leppie

+0

leppie: Das Problem hier ist langsames Netzwerk. –

+0

leppie: Ich spreche über 14 Datenbankanrufe in einer Sekunde in der schlimmsten Zeit. und ich habe Angst vor langsamen Netzwerk. –

Antwort

2

Wenn Sie Ihre Datenbank Anrufe besorgt sind vielleicht zu langsam ist nur Sie einen Index für die Datenbank setzen. Dies wird die Suchgeschwindigkeit verbessern und Sie werden möglicherweise Ihren lokalen Cache nicht benötigen.

Wenn Sie wirklich einen lokalen Cache möchten, können Sie eine HashSet<T> mit den Tasten Ihrer Datensätze zu speichern. Verwenden Sie hashSet.Contains um zu sehen, ob ein Schlüssel in ungefähr O (1) Zeit vorhanden ist.

Da Sie bereits einen Cache Ihrer Datenbank Implementierung, können Sie auch vor Ort auch die Daten aus der Tabelle zu prüfen, zu speichern, nicht nur die Schlüssel. Dazu können Sie eine Dictionary<TKey, TValue> verwenden.

+0

Mark Byers: Ich arbeite in .net 2.0 –

+0

@Night Walker: HashSet ist in .NET 2.0 nicht verfügbar, aber das Wörterbuch ist. In .NET 2.0 können Sie anstelle eines HashSet ein Dictionary verwenden - speichern Sie einfach null als Wert. Oder finden Sie eine externe Bibliothek, die eine Implementierung von HashSet bereitstellt. –

+0

@Mark Byers: wenn die Datenbank ändert, wie ich das neue Wörterbuch mit den neuen Tabellen bekommen kann. Ohne zur Datenbank zu gehen und eine neue zu erstellen. –

0

Was ist mit nur Cache die gesamte Datentabelle in Ihrem lokalen Speicher.

und wählen Sie Zeilen aus dem lokalen Speicher

Verwandte Themen