Wie kann die Leistung für die Datetime-Filterung in SQL Server verbessert werden?

Ich habe ein Problem beim Filtern nachdatetime Säulen.

Ich habe diese beiden Methoden ausprobiert:

datefield < '2013-03-15 17:17:55.179'
datefield < CAST('2013-03-15 17:17:55.179' AS datetime)

Ich habe eine große Datenbank mit über 3.000.000 Hauptobjekten.

Also muss ich die Leistung für meine verbesserndatetime Filterung. Ich habe über den UNIX - Zeitstempel gelesen (alle konvertieren)datetime nach UNIX-Zeitstempel und dann nach diesem UNIX-Feld filtern).

Ich denke, es ist ein besserer Weg, als danach zu filterndatetime. Aber wenn jemand etwas anderes weiß, würde ich es begrüßen.

Meine Anfrage lautet:

SELECT TOP (100)  ev.Title as Event_name, po.Name as POI_name, 
po.Address, po.City, po.Region, po.Country, po.Latitude, po.Longitude, ev.Start_time, 
(Select ID_Category FROM SubCategory s where ev.ID_SubCategory = s.ID_SubCategory) as ID_Category, 
ev.ID_SubCategory, ev.ID_Event, ev.ID_Channel, IDChanelEvent, 
ev.FavoriteCount, po.gmtOffset, v.IsFavorite, v1.IsFavorite  
FROM Events ev 
JOIN POI po ON ev.ID_POI = po.ID_POI 
JOIN (SELECT et.id_event as joinIdEv FROM EventTagLink et, tags t 
 WHERE t.id_tag = et.id_tag 
 AND ( t.Title = N'music' ) 
 ) as joinEvents 
 ON joinEvents.joinIdEv = ev.ID_Event 
LEFT JOIN Viewed v ON v.ID_Event = ev.ID_Event AND v.ID_User = 1 AND v.IsFavorite = 1 LEFT join Viewed v1 ON v1.ID_Event = ev.ID_Event AND v1.ID_User = 1 AND v1.IsFavorite = 0
WHERE 
--ev.GmtStop_time > '2013-03-15 14:17:55.188' AND 
po.Latitude > 41.31423 AND po.Latitude < 61.60511 
AND  po.Longitude > -6.676602 AND po.Longitude < 17.04498  
AND ev.ID_SubCategory in (3, 12, 21, 4, 30, 13, 22, 6, 14, 40, 23, 7, 32, 15, 41, 8, 50, 33, 16, 42, 25, 9, 34, 17, 35, 18, 44, 27, 36, 19, 45, 28, 37, 46, 29, 38, 47, 39, 48, 49, 10, 1, 11, 2, 20) 
--AND ev.GmtStart_time< '2013-03-15 17:17:55.179'
AND v1.IsFavorite is null

Filtern nach der Zeit, die ich kommentiert habe.

Wenn ich diese Filter ausschalte, beträgt die Anforderungsdauer mehrere Sekunden. Wenn ich sie einschalte, beträgt die Anforderungsdauer mehr als 25 Sekunden.

Ausführungsplan mit Filterung von datetimeAusführungsplan ohne Datums- / Uhrzeitfilter

Es wird also viel über Ausführungspläne, Indizes usw. diskutiert. Aber was ist mitUNIX-Zeitstempel, das ist der Hauptgrund, warum ich die Frage dort gestellt habe.Würde es die Leistung verbessern?datetime filtern?

Danke im Voraus.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage