powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / select * vs select count(*)
63 сообщений из 63, показаны все 3 страниц
select * vs select count(*)
    #39728247
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, что должно выполняться быстрее и почему?
Код: sql
1.
select * from MY_TABLE


или
Код: sql
1.
select count(*) from MY_TABLE
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728302
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что сделать легче -- притащить сто мешков цемента себе домой или просто посчитать их количество?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728304
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей АлексеевичА что сделать легче -- притащить сто мешков цемента себе домой или просто посчитать их количество?

А что тс нужно - посчитать сколько у него на складе мешков цемента или понять какой марки цемент и в какой фасовке?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728305
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PizzaPizzaГавриленко Сергей АлексеевичА что сделать легче -- притащить сто мешков цемента себе домой или просто посчитать их количество?

А что тс нужно - посчитать сколько у него на складе мешков цемента или понять какой марки цемент и в какой фасовке?Тс вот он -- у него и спрашивайте.

З.Ы. Но в целом, вопрос "что быстрее" в отношении двух запросов, которые возвращают разный результат, всегда умилен.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728308
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич,

Меня всегда удивляли способности некоторых участников этого форума понимать довольно бессвязные (с моей точки зрения) хотелки вопрошающих, но в данном случае, я думаю, никакой хрустальный шар не справится.

ТС, а вам чего надо в результате?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728365
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerПодскажите, пожалуйста, что должно выполняться быстрее и почему?
Код: sql
1.
select * from MY_TABLE


или
Код: sql
1.
select count(*) from MY_TABLE


ни то ни другое.
Быстрее всего будет
Код: sql
1.
SELECT 1
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728371
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan DurakquestionerПодскажите, пожалуйста, что должно выполняться быстрее и почему?
Код: sql
1.
select * from MY_TABLE



или
Код: sql
1.
select count(*) from MY_TABLE



ни то ни другое.
Быстрее всего будет
Код: sql
1.
SELECT 1

Ещё быстрее
Код: sql
1.
EXEC(N'');
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728374
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей АлексеевичА что сделать легче -- притащить сто мешков цемента себе домой или просто посчитать их количество?

Хочу понять какая будет разница в производительности, если посчитать count в программе.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728375
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerГавриленко Сергей АлексеевичА что сделать легче -- притащить сто мешков цемента себе домой или просто посчитать их количество?

Хочу понять какая будет разница в производительности, если посчитать count в программе.
вы наверное и умножением в жизни не пользуетесь, только сложение
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728387
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKquestionerпропущено...


Хочу понять какая будет разница в производительности, если посчитать count в программе.
вы наверное и умножением в жизни не пользуетесь, только сложение

Хочу понять тут разница больше в удобстве или в перформансе
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728390
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerTaPaKпропущено...

вы наверное и умножением в жизни не пользуетесь, только сложение

Хочу понять тут разница больше в удобстве или в перформансе
ресурсы вы вообще в расчёт не берёте? Или про мешки слишком сложная аналогия?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728402
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKquestionerпропущено...


Хочу понять тут разница больше в удобстве или в перформансе
ресурсы вы вообще в расчёт не берёте? Или про мешки слишком сложная аналогия?

Аналогия понятная, но не очень точная. Куда этим мешки тащить? Сколько они весят?

Ресурсы - Вы имеете ввиду трафик между базой и приложением?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728404
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerTaPaKпропущено...

ресурсы вы вообще в расчёт не берёте? Или про мешки слишком сложная аналогия?

Аналогия понятная, но не очень точная. Куда этим мешки тащить? Сколько они весят?

Ресурсы - Вы имеете ввиду трафик между базой и приложением?
поднять с диска в память, передать это ненужное скопище, посчитать на клиенте, т.е. все возможные ресурсы какие только можно
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728430
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerГавриленко Сергей АлексеевичА что сделать легче -- притащить сто мешков цемента себе домой или просто посчитать их количество?

Хочу понять какая будет разница в производительности, если посчитать count в программе.

важно - не слушать пессимистов!
Сделать в приложении счетчик, и по-быстрому посчитать количество возвращенных записей.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728433
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKquestionerпропущено...


Аналогия понятная, но не очень точная. Куда этим мешки тащить? Сколько они весят?

Ресурсы - Вы имеете ввиду трафик между базой и приложением?
поднять с диска в память, передать это ненужное скопище, посчитать на клиенте, т.е. все возможные ресурсы какие только можно

а можно это в процентах примерно выразить в ситуации, что приложение и база на одном сервере?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728439
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerTaPaKпропущено...

поднять с диска в память, передать это ненужное скопище, посчитать на клиенте, т.е. все возможные ресурсы какие только можно
а можно это в процентах примерно выразить в ситуации, что приложение и база на одном сервере?

что "это" выразить в процентах и куда потом вы это число примените?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728441
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerTaPaKпропущено...

поднять с диска в память, передать это ненужное скопище, посчитать на клиенте, т.е. все возможные ресурсы какие только можно

а можно это в процентах примерно выразить в ситуации, что приложение и база на одном сервере?
как в процентах выразить глупость решения?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728445
Фотография 4d_monster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKкак в процентах выразить глупость решения?

Легко: +INF
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728447
iiyama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,
вижу меж строк,у автора цель- новый сервер и широкий канал, так что
добавьте поле varbinary(max), залейте туда кучу фоток в высоком разрешении и главное везде ставьте *
Скоро либо руководство найдет финансирование, либо ТС новую высокооплачиваемую работу
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728467
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKquestionerпропущено...


а можно это в процентах примерно выразить в ситуации, что приложение и база на одном сервере?
как в процентах выразить глупость решения?

Ну зачем утрировать то.

Я хочу понять на сколько это будет медленнее работать. Я хочу услышать ответ, что это будет рабоать в 2 раза медленее, чем count или в 1.1 раза медленнее, либо это будет работать также,но потом ещё в программе придётся считать, а это дополнительное время. Глупость/умность решения это уже другой вопрос.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728473
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerTaPaKпропущено...

как в процентах выразить глупость решения?

Ну зачем утрировать то.

Я хочу понять на сколько это будет медленнее работать. Я хочу услышать ответ, что это будет рабоать в 2 раза медленее, чем count или в 1.1 раза медленнее, либо это будет работать также,но потом ещё в программе придётся считать, а это дополнительное время. Глупость/умность решения это уже другой вопрос.До 100500 раз медленее. Задачи, которые вы решаете, и цели, которые вы преследуете, не понятны, поэтому правило простое -- все, что можно посчитать на сервере, в 99.9(9)% случаев быстрее, чем сначала притащить все данные на сторону клиента, а потом считать там.

З.Ы. И да, скажите уже кто-нибудь топикстартеру про sys.partitions. И про exists() на случай, если он хочет сравнивать свой count(*) с 0.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728477
Massa52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,
Примените классику - решите задачу с одним "мешком" с подсчетом времени переноса, потом для двух, затем обобщите для n ...
Поскольку только вам известны параметры ваших "мешков", то вам и считать затраты на посчет и переноску.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728481
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пусть считает в клиенте. Развлекать клоунадой "я просто хочу понять" не стоит
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728615
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевичquestionerпропущено...


Ну зачем утрировать то.

Я хочу понять на сколько это будет медленнее работать. Я хочу услышать ответ, что это будет рабоать в 2 раза медленее, чем count или в 1.1 раза медленнее, либо это будет работать также,но потом ещё в программе придётся считать, а это дополнительное время. Глупость/умность решения это уже другой вопрос.До 100500 раз медленее. Задачи, которые вы решаете, и цели, которые вы преследуете, не понятны, поэтому правило простое -- все, что можно посчитать на сервере, в 99.9(9)% случаев быстрее, чем сначала притащить все данные на сторону клиента, а потом считать там.

З.Ы. И да, скажите уже кто-нибудь топикстартеру про sys.partitions. И про exists() на случай, если он хочет сравнивать свой count(*) с 0.

про exists знаю. А что такое аргумент Count тоже не знаю, но это оффтоп конечно.

sys.partitions тоже не знаю

Я не понимаю почему Вы так реагируете на вопрос. Я ведь могу вам ответить, что алгоритм сортировки пузырьком работает за O(n^2), а quicksort за O(n*log(n))
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728622
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

автор Я ведь могу вам ответить, что алгоритм сортировки пузырьком работает за O(n^2), а quicksort за O(n*log(n))
с козырей пошёл что-ли? А я вязать крючком умею
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728627
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKquestioner,

автор Я ведь могу вам ответить, что алгоритм сортировки пузырьком работает за O(n^2), а quicksort за O(n*log(n))
с козырей пошёл что-ли? А я вязать крючком умею

Просто непонятно в чём суть претензий ко мне. Я задал вопрос. Мне говорят, что твой вопрос говно. Блин, чуваки, я понимаю, что count лучше, но насколько ? русским по белому же написано.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728629
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerTaPaKquestioner,

пропущено...

с козырей пошёл что-ли? А я вязать крючком умею

Просто непонятно в чём суть претензий ко мне. Я задал вопрос. Мне говорят, что твой вопрос говно. Блин, чуваки, я понимаю, что count лучше, но насколько ? русским по белому же написано.
на 42
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728630
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKquestionerпропущено...


Просто непонятно в чём суть претензий ко мне. Я задал вопрос. Мне говорят, что твой вопрос говно. Блин, чуваки, я понимаю, что count лучше, но насколько ? русским по белому же написано.
на 42

попугая?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728633
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

для начала узнайте, что происходит при select * from MY_TABLE и при select count(*) from MY_TABLE. После этого сможете произвести какую-то количественную оценку.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728637
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосовquestioner,

для начала узнайте, что происходит при select * from MY_TABLE и при select count(*) from MY_TABLE. После этого сможете произвести какую-то количественную оценку.
Вот именно я это и хочу узнать тут) explain-ом пользоваться не умею
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728639
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

Запрос, как минимум, что-то возвращает спросившему. Разве не очевидно? Какой объем данных вернется клиентскому приложению и за какое время в том или ином случае?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728640
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner но насколько ?
время_необходимое_на_чтение_данных_для_select_* + время_необходимое_для_передачи_данных_клиенту + время_необходимое_для_подсчета_количества_строк_на_клиенте - время_необходимое_на_чтение_данных_для_select_count(*) - время_необходимое_для_подсчета_количества_строк_на_сервере
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728683
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invmquestioner но насколько ?
время_необходимое_на_чтение_данных_для_select_* + время_необходимое_для_передачи_данных_клиенту + время_необходимое_для_подсчета_количества_строк_на_клиенте - время_необходимое_на_чтение_данных_для_select_count(*) - время_необходимое_для_подсчета_количества_строк_на_сервере

авторвремя_необходимое_на_чтение_данных_для_select_*
и
авторвремя_необходимое_на_чтение_данных_для_select_count(*)
Это одно и то же время?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728684
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerinvmпропущено...

время_необходимое_на_чтение_данных_для_select_* + время_необходимое_для_передачи_данных_клиенту + время_необходимое_для_подсчета_количества_строк_на_клиенте - время_необходимое_на_чтение_данных_для_select_count(*) - время_необходимое_для_подсчета_количества_строк_на_сервере

авторвремя_необходимое_на_чтение_данных_для_select_*
и
авторвремя_необходимое_на_чтение_данных_для_select_count(*)
Это одно и то же время?

Далеко не всегда
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728689
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLexquestionerпропущено...


пропущено...

и
пропущено...

Это одно и то же время?

Далеко не всегда

Вот это уже интересно. Можете объяснить подробнее?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728693
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionermsLexпропущено...


Далеко не всегда

Вот это уже интересно. Можете объяснить подробнее?

То, что сразу приходит на ум
дополнительные (не кластерные) индексы, LOB-ы, Row Overflow, Columnstore
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728695
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLexquestionerпропущено...


Вот это уже интересно. Можете объяснить подробнее?

То, что сразу приходит на ум
дополнительные (не кластерные) индексы, LOB-ы, Row Overflow, Columnstore

Из всего вышеперечисленного имею представление только об индексах. Они как-то помогают сделать select count(*) быстрее/медленнее чем select * ?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728697
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionermsLexпропущено...


То, что сразу приходит на ум
дополнительные (не кластерные) индексы, LOB-ы, Row Overflow, Columnstore

Из всего вышеперечисленного имею представление только об индексах. Они как-то помогают сделать select count(*) быстрее/медленнее чем select * ?

Да, при select count(*) не нужно читать все данные таблицы, а достаточно тех, что хранятся в самом узком индексе.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728702
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

Время для sql сервера не ресурс.

авторавтор42
попугая?

дети только мултики нынче смотрят.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728703
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLexquestionerпропущено...


Из всего вышеперечисленного имею представление только об индексах. Они как-то помогают сделать select count(*) быстрее/медленнее чем select * ?

Да, при select count(*) не нужно читать все данные таблицы, а достаточно тех, что хранятся в самом узком индексе.

А что такое ширина индекса?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728705
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerА что такое ширина индекса?
Пусть это будет ваше ДЗ.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728707
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexquestionerЭто одно и то же время?

Далеко не всегдаЛучше сказать "безусловно никогда".
questionerВот это уже интересно. Можете объяснить подробнее?Для подсчёта в самом худшем случае (без узких индексов) на сервере нужно будет считать все страницы, подсчитывая количество записей.
А на клиенте нужно будет передать эти страницы на клиента через клиентские библиотеки доступа, потом ена клиенте их посчитать.

Получаем замедление в 4 раза.

При наличии уникального индекса получаем замедление в 4 * (отношение размера индекса к размеру таблицы)

Если подсчёт на сиквеле делается неоптимально, то коэффициент замедлленя будет меньше. Насколько - наверное, можно пострашивать на блогах разработчиков, но ввиду полной неприменимости результата вряд ли кто то спрашивал.


questioner, странно, что такое приходится объяснять, может быть, вы не программист/не технарь?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728713
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLexquestionerА что такое ширина индекса?
Пусть это будет ваше ДЗ.

Ок, тогда с вас правильное название этого термина)
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728715
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgmsLexпропущено...


Далеко не всегдаЛучше сказать "безусловно никогда".
questionerВот это уже интересно. Можете объяснить подробнее?Для подсчёта в самом худшем случае (без узких индексов) на сервере нужно будет считать все страницы, подсчитывая количество записей.
А на клиенте нужно будет передать эти страницы на клиента через клиентские библиотеки доступа, потом ена клиенте их посчитать.
Вопрос был о

время_необходимое_на_ чтение_данных _для_select_*
VS
время_необходимое_на_ чтение_данных _для_select_count(*)
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728718
Фотография 4d_monster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionermsLexпропущено...


То, что сразу приходит на ум
дополнительные (не кластерные) индексы, LOB-ы, Row Overflow, Columnstore

Из всего вышеперечисленного имею представление только об индексах. Они как-то помогают сделать select count(*) быстрее/медленнее чем select * ?
Если грубо: Представьте книгу. count(*) - посмотреть в оглавлении количество страниц и написать его на листочке. select * - переписать всю книгу на листочки и потом посчитать сколько листочков получилось.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728719
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerОк, тогда с вас правильное название этого термина)

За пивком не сгонять?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728722
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4d_monsterЕсли грубо: Представьте книгу. count(*) - посмотреть в оглавлении количество страниц и написать его на листочке. select * - переписать всю книгу на листочки и потом посчитать сколько листочков получилось.
Только считать нужно не количество страниц а количество строк на страницах, и тут оглавление не поможет.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728723
Фотография 4d_monster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex,

Да, так ещё точнее аналогия получается.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728749
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvgmsLexпропущено...


Далеко не всегдаЛучше сказать "безусловно никогда".
questionerВот это уже интересно. Можете объяснить подробнее?Для подсчёта в самом худшем случае (без узких индексов) на сервере нужно будет считать все страницы, подсчитывая количество записей.
А на клиенте нужно будет передать эти страницы на клиента через клиентские библиотеки доступа, потом ена клиенте их посчитать.

Получаем замедление в 4 раза.

При наличии уникального индекса получаем замедление в 4 * (отношение размера индекса к размеру таблицы)

Если подсчёт на сиквеле делается неоптимально, то коэффициент замедлленя будет меньше. Насколько - наверное, можно пострашивать на блогах разработчиков, но ввиду полной неприменимости результата вряд ли кто то спрашивал.


questioner, странно, что такое приходится объяснять, может быть, вы не программист/не технарь?

Не силён в базах данных...

Меня в данном вопросе интересует чисто работа сервера базы данных.Не интересует работа работа приложения и трафик между ДБ и приложением. Интересует чисто время на подготовку ответа.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728751
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLexquestionerОк, тогда с вас правильное название этого термина)

За пивком не сгонять?

Спасибо, не любитель.

Как на буржуйском это звучит?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728763
архивариус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

т.к. вопрос про сферических коней в вакууме позволю ответ:
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728771
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
архивариусquestioner,

т.к. вопрос про сферических коней в вакууме позволю ответ:

А можете как-то прокомментировать почему ColumnStore index scan в случае count(*) - 18%, а в случае select * - 100%

Это как-то связано с тем, что для страниц полностью забитых записями можно взять размер и получим count на странице?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728783
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

одна операция всегда занимает 100% общего времени.

Интересует чисто время на подготовку ответа.
А в чем интерес-то? Практической пользы в таком любопытстве ноль. Описанный сценарий физически не существует, а только в воображении.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728794
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосовquestioner,

одна операция всегда занимает 100% общего времени.

Интересует чисто время на подготовку ответа.
А в чем интерес-то? Практической пользы в таком любопытстве ноль. Описанный сценарий физически не существует, а только в воображении.

ааа, понятно.

А почему вроде как одна и та же операция в плане в первом случае проходит в 10+ раз быстрее?

Практической пользы нет, зато есть теоретическая.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728799
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
даже не просто 10+, а 64
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728800
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerдаже не просто 10+, а 64
медсестра-теоретитк?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728803
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKquestionerдаже не просто 10+, а 64
медсестра-теоретитк?
язык слишком длинный что ли?
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728873
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

наверху запрос в несколько потоков и нет выгрузки.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728874
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
set statistics io on
 set statistics time on 
select count(*) from master.dbo.spt_values
set statistics io off
 set statistics time off 
-----------------
Table 'spt_values'. Scan count 1, logical reads 14, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 1 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.
--------------------
-------------------
 set statistics io on
 set statistics time on 
select *from master.dbo.spt_values
set statistics io off
 set statistics time off 
------------------------
Table 'spt_values'. Scan count 1, logical reads 17, physical reads 1, read-ahead reads 15, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 81 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728885
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexalexeyvgпропущено...
Лучше сказать "безусловно никогда".
пропущено...
Для подсчёта в самом худшем случае (без узких индексов) на сервере нужно будет считать все страницы, подсчитывая количество записей.
А на клиенте нужно будет передать эти страницы на клиента через клиентские библиотеки доступа, потом ена клиенте их посчитать.
Вопрос был о

время_необходимое_на_ чтение_данных _для_select_*
VS
время_необходимое_на_ чтение_данных _для_select_count(*)А, понял, я держал в уме исходный вопрос, "Подскажите, пожалуйста, что должно выполняться быстрее и почему?", перепутал.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728929
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxx
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
set statistics io on
 set statistics time on 
select count(*) from master.dbo.spt_values
set statistics io off
 set statistics time off 
-----------------
Table 'spt_values'. Scan count 1, logical reads 14, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 1 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.
--------------------
-------------------
 set statistics io on
 set statistics time on 
select *from master.dbo.spt_values
set statistics io off
 set statistics time off 
------------------------
Table 'spt_values'. Scan count 1, logical reads 17, physical reads 1, read-ahead reads 15, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 81 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.



Получается, что в случае select count(*)
- на 3 логических чтения меньше(17 против 14)
- на 1 физических чтений меньше(1 против 0)
- на 15 чтений read-ahead меньше (15 против 0)


Я так понимаю логическое чтение это чтение из кеша. Почему для count их меньше?
Физическое чтение видимо нужно для формирование ответа?

read-ahead как я понял это что-то типа упреждающего чтения вперёд. Не понятно почему оно должно отличаться при этих запросах.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39728963
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerПолучается, что в случае select count(*)
- на 3 логических чтения меньше(17 против 14)
- на 1 физических чтений меньше(1 против 0)
- на 15 чтений read-ahead меньше (15 против 0)read-ahead и physical будут случайно меняться, на них не смотрите.
А логическое чтение для * будет стабильно больше. Не знаю почему, может, серверу нужно прочитать метаданные колонок?

Понятно, что разница в чтении небольшая, если только не делается распараллеливание, или не читаются LOB поля. Основное различие по исходному вопросу - необходимость передачи данных на клиента, через несколько программных слоёв, вот это замедлит запрос в много раз.
...
Рейтинг: 0 / 0
select * vs select count(*)
    #39729032
архивариус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerархивариусquestioner,

т.к. вопрос про сферических коней в вакууме позволю ответ:

А можете как-то прокомментировать почему ColumnStore index scan в случае count(*) - 18%, а в случае select * - 100%

1. иконки разные
2. 18% от 8% и 100% от 92%
...
Рейтинг: 0 / 0
63 сообщений из 63, показаны все 3 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / select * vs select count(*)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]