Datenbank Abfrage optimieren



  • Hallo Leute,

    ich verwende SqlCe Um daten zu speichern.

    -ZeitStempel
    -Datentyp
    -RowDaten
    -DatenID

    nun mache ich abfrage welche über eine Zeitfenster und ID Filter ausgeführt werden

    Select * FROM MyTable Where ZeitStempl BETWEEN ... AND .... AND (DatenID=.. OR DatenID=... OR DatenID=..);

    So abhängig des DatenID Filter ABfrage Teil wird automatisch von mir generiert. Die datenbank enthält do 400.000 Datensätze , nun dauert dementsprächend lang! Gib es ne möglichkeit das ganze zu beschleuningen??

    Nen Index auf DatenID und Zeitstemple hab ich auch schon?? was würde noch gehen??

    Hier der Datenbank aufbau :

    string strSQL = "CREATE TABLE Archive (" +
    							   "ChronologicalID INT IDENTITY(1,1) not null," +
    							   "TagID SMALLINT," +
    							   "LogTimeOA FLOAT," +
    							   "BinaryData VARBINARY(256)," +
    							   "BinarySize SMALLINT," +
    							   "ValueTypeID SMALLINT," +
    								"CONSTRAINT PK_Customers PRIMARY KEY (ChronologicalID));";
    
    				using (var cmd = new SqlCeCommand(strSQL, db))
    				{
    					cmd.ExecuteNonQuery();
    				}
    
    				using (var cmd = new SqlCeCommand("SET IDENTITY_INSERT Archive OFF", db))
    				{
    					cmd.ExecuteNonQuery();
    				}
    
    				using (var cmd = new SqlCeCommand("CREATE INDEX TagIDIndex ON Archive(TagID)", db))
    				{
    					cmd.ExecuteNonQuery();
    				}
    
    				using (var cmd = new SqlCeCommand("CREATE INDEX LogTimeOAIndex ON Archive(LogTimeOA)", db))
    				{
    					cmd.ExecuteNonQuery();
    				}
    

Anmelden zum Antworten