Наши даты хранятся как: "2/22/2008 12:00:00 AM"
. Нам нужно отфильтровать результаты, чтобы мы могли получать документы два раза.
Если мы сравним два запроса, один из которых использует UDF, а другой нет, один с UDF будет на несколько порядков медленнее.
С:
SELECT DISTINCT
c.eh, c.wcm, w AS wt
FROM
c
JOIN w IN c.wt
WHERE
(udf.toValue(w.ced) BETWEEN udf.toValue('03/02/2023') AND udf.toValue('09/02/2023'))
AND w.ty = 'FW'
OFFSET 0
LIMIT 10
И без:
SELECT DISTINCT
c.eh, c.wcm, w AS wt
FROM
c
JOIN w IN c.wt
WHERE
w.ty = 'FW'
OFFSET 0
LIMIT 10
Вот UDF:
function userDefinedFunction(datestr){
return new Date(datestr).getTime();
}
Согласно второй ответ здесь (один из сотрудников MS, который работает в Космосе) Я просто смог бы сделать прямое сравнение:
(w.ced BETWEEN '03/02/2023' AND '09/02/2023')
Но это возвращает 0 результатов. Я чрезвычайно новичок в Космосе. Как можно оптимизировать этот запрос? Я должен добавить, что уже есть idex на wt/ced
.