У меня есть простой вопрос с двумя вариантами получения количества строк на SQL-сервере (2005). Я использую VS 2005. Есть два варианта, чтобы получить количество:Подсчитывать строки против таблицы SQL Server (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-сервер создавать временную таблицу или кеш на стороне сервера, и это приведет к низкой производительности, если таблица слишком велика? Я не уверен, что лучший способ получить счет?
В начало страницы ГДЕ dt> = startDt И dt
TomTom
не должно быть потому, что между ними должно быть WHERE dt> = startDt AND dt <= endDt; Взгляните на http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/how-does-between-work-with-dates-in-sql- почему он не умеет использовать между датами – SQLMenace
I означает, что он НЕ должен, между включенным – SQLMenace