У меня проблема с фильтрацией столбцами datetime
.
Я пробовал эти два метода:
datefield < '2013-03-15 17:17:55.179'
datefield < CAST('2013-03-15 17:17:55.179' AS datetime)
У меня есть большая база данных с более чем 3000 000 основных объектов.
Поэтому мне нужно улучшить производительность для фильтрации datetime
. Я читал об отметке времени UNIX (конвертировал все datetime
в временную метку UNIX, а затем отфильтровывал это поле UNIX).
Я думаю, что это лучший способ, чем фильтрация datetime
. Но если кто-то знает какой-то другой способ, я был бы признателен.
Мой запрос:
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
когда я прокомментировал.
Если я отключу эти фильтры, длительность запроса - несколько секунд. Если я включу их, длительность запроса составит более 25 секунд.
Итак, есть много обсуждений о планах выполнения, индексах и т.д. Но как насчет UNIX timestamp, что является основной причиной, по которой я поставил вопрос. Будет ли улучшена производительность фильтрации datetime
?
Спасибо заранее.