У меня есть запрос, который возвращает 10000 записей, которые используются в качестве точек на карте. В попытке снизить нагрузку и увеличить скорость приложения мы пытаемся реализовать логику Уровень детализации . Как правило, при уменьшении отображать 50% точек. При увеличении отобразите 100% точек.
В конечном итоге мне нужен итоговый SQL-код:
SELECT *
FROM
(SELECT
[t0].[RecordName],
[t0].[LastMaintenanceDate]
,Row_Number() OVER (ORDER BY [t0].Ticker) as RowNumber
FROM
[dbo].[TableName] AS [t0]
)as [t1]
WHERE RowNumber % 2 = 0
В LINQ я могу использовать .Skip и .Take, чтобы получить часть Row_Number () Over ( пример здесь ), но при этом генерируемые критерии Where используют «между» вместо «где» RowNumber% 2 = 0 ", который мне нужен.
Правильно ли я подхожу к этому? Чтобы получить полный прирост производительности, который мы ищем здесь, это исключение действительно должно произойти на сервере SQL.