Я использую следующий запрос для подкачки в моем приложении (MVC4, SQL Server):Как я могу улучшить запрос подкачки sql?
string sql = "SELECT Id, Name, Date, allCount FROM (" +
"SELECT Id, Name, Date, COUNT(Id) OVER() as allCount, " +
"ROW_NUMBER() OVER (ORDER BY Date DESC, Id) AS RowNum FROM Products) AS SOD " +
"WHERE SOD.RowNum BETWEEN ((@PageNumber-1)*@RowsPerPage)+1 AND @RowsPerPage*(@PageNumber) ORDER BY Date DESC";
Это работает для меня, но я хочу знать, это нормальный подход рассчитывать allCount много раз? Я боюсь, что считать allCount много раз, повлияет на скорость для массовых данных. Но, для просмотра мне нужно Кол-во всех товаров сделать разбиение на страницы. Это нормальный код, если нет, как я могу его изменить?
По-прежнему увеличивайте пропускную способность. – Aron
Это, скорее всего, неясно, поскольку OP, вероятно, не возвращает более 100 записей за раз, вершины. 100 recods times 4 bytes (count возвращает 4-байтовое целое число) равно 400 байтам - это почти ничего. – Dan