У меня есть простой вопрос с двумя вариантами, чтобы получить количество строк на сервере SQL (2005). Я использую VS 2005. Есть два варианта, чтобы получить счет:
SELECT id FROM Table1 WHERE dt >= startDt AND dt < endDt;;
Я получаю список идентификаторов из вышеупомянутого вызова в кеше, а затем получаю счет по List.Count. Другой вариант -
SELECT COUNT(*) FROM Table1 WHERE dt >= startDt AND dt < endDt;
Вышеуказанный вызов получит счет напрямую. Проблема в том, что у меня было несколько случаев исключений со вторым методом: тайм-аут. Я обнаружил, что таблица1 слишком велика с миллионами данных. Когда я использовал первый вариант, это было нормально.
Меня смущает тот факт, что Count () занимает больше времени, чем получение всех строк (это правда?). Не уверены, что вызов агрегации с Count () приведет к тому, что сервер SQL создаст временную таблицу или кэш на стороне сервера, и это приведет к снижению производительности, когда таблица слишком большая? Я не уверен, что это лучший способ получить счет?