Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: select * vs select count(*)  [new]
questioner
Member

Откуда:
Сообщений: 1878
TaPaK
questioner,

автор
Я ведь могу вам ответить, что алгоритм сортировки пузырьком работает за O(n^2), а quicksort за O(n*log(n))

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


Просто непонятно в чём суть претензий ко мне. Я задал вопрос. Мне говорят, что твой вопрос говно. Блин, чуваки, я понимаю, что count лучше, но насколько? русским по белому же написано.
6 ноя 18, 15:45    [21725415]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
questioner
TaPaK
questioner,

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

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


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

на 42
6 ноя 18, 15:45    [21725417]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
questioner
Member

Откуда:
Сообщений: 1878
TaPaK
questioner
пропущено...


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

на 42


попугая?
6 ноя 18, 15:49    [21725421]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
questioner,

для начала узнайте, что происходит при select * from MY_TABLE и при select count(*) from MY_TABLE. После этого сможете произвести какую-то количественную оценку.
6 ноя 18, 15:51    [21725425]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
questioner
Member

Откуда:
Сообщений: 1878
Владислав Колосов
questioner,

для начала узнайте, что происходит при select * from MY_TABLE и при select count(*) from MY_TABLE. После этого сможете произвести какую-то количественную оценку.

Вот именно я это и хочу узнать тут) explain-ом пользоваться не умею
6 ноя 18, 15:53    [21725432]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
questioner,

Запрос, как минимум, что-то возвращает спросившему. Разве не очевидно? Какой объем данных вернется клиентскому приложению и за какое время в том или ином случае?
6 ноя 18, 15:56    [21725437]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
invm
Member

Откуда: Москва
Сообщений: 9122
questioner
но насколько?

время_необходимое_на_чтение_данных_для_select_* + время_необходимое_для_передачи_данных_клиенту + время_необходимое_для_подсчета_количества_строк_на_клиенте - время_необходимое_на_чтение_данных_для_select_count(*) - время_необходимое_для_подсчета_количества_строк_на_сервере
6 ноя 18, 15:58    [21725439]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
questioner
Member

Откуда:
Сообщений: 1878
invm
questioner
но насколько?

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


автор
время_необходимое_на_чтение_данных_для_select_*

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

Это одно и то же время?
6 ноя 18, 16:47    [21725523]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
msLex
Member

Откуда:
Сообщений: 7730
questioner
invm
пропущено...

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


автор
время_необходимое_на_чтение_данных_для_select_*

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

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


Далеко не всегда
6 ноя 18, 16:49    [21725525]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
questioner
Member

Откуда:
Сообщений: 1878
msLex
questioner
пропущено...


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

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

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


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


Вот это уже интересно. Можете объяснить подробнее?
6 ноя 18, 16:54    [21725533]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
msLex
Member

Откуда:
Сообщений: 7730
questioner
msLex
пропущено...


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


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


То, что сразу приходит на ум
дополнительные (не кластерные) индексы, LOB-ы, Row Overflow, Columnstore
6 ноя 18, 16:57    [21725540]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
questioner
Member

Откуда:
Сообщений: 1878
msLex
questioner
пропущено...


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


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


Из всего вышеперечисленного имею представление только об индексах. Они как-то помогают сделать select count(*) быстрее/медленнее чем select * ?
6 ноя 18, 16:59    [21725545]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
msLex
Member

Откуда:
Сообщений: 7730
questioner
msLex
пропущено...


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


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


Да, при select count(*) не нужно читать все данные таблицы, а достаточно тех, что хранятся в самом узком индексе.
6 ноя 18, 17:02    [21725547]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
questioner,

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

автор
автор
42

попугая?

дети только мултики нынче смотрят.
6 ноя 18, 17:06    [21725556]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
questioner
Member

Откуда:
Сообщений: 1878
msLex
questioner
пропущено...


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


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


А что такое ширина индекса?
6 ноя 18, 17:07    [21725558]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
msLex
Member

Откуда:
Сообщений: 7730
questioner
А что такое ширина индекса?

Пусть это будет ваше ДЗ.
6 ноя 18, 17:08    [21725564]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30766
msLex
questioner
Это одно и то же время?


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

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

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

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


questioner, странно, что такое приходится объяснять, может быть, вы не программист/не технарь?
6 ноя 18, 17:11    [21725567]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
questioner
Member

Откуда:
Сообщений: 1878
msLex
questioner
А что такое ширина индекса?

Пусть это будет ваше ДЗ.


Ок, тогда с вас правильное название этого термина)
6 ноя 18, 17:14    [21725574]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
msLex
Member

Откуда:
Сообщений: 7730
alexeyvg
msLex
пропущено...


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

Вопрос был о

время_необходимое_на_чтение_данных_для_select_*
VS
время_необходимое_на_чтение_данных_для_select_count(*)
6 ноя 18, 17:15    [21725577]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
4d_monster
Member

Откуда: Москва
Сообщений: 1615
questioner
msLex
пропущено...


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


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

Если грубо: Представьте книгу. count(*) - посмотреть в оглавлении количество страниц и написать его на листочке. select * - переписать всю книгу на листочки и потом посчитать сколько листочков получилось.
6 ноя 18, 17:16    [21725581]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
msLex
Member

Откуда:
Сообщений: 7730
questioner
Ок, тогда с вас правильное название этого термина)


За пивком не сгонять?
6 ноя 18, 17:17    [21725583]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
msLex
Member

Откуда:
Сообщений: 7730
4d_monster
Если грубо: Представьте книгу. count(*) - посмотреть в оглавлении количество страниц и написать его на листочке. select * - переписать всю книгу на листочки и потом посчитать сколько листочков получилось.

Только считать нужно не количество страниц а количество строк на страницах, и тут оглавление не поможет.
6 ноя 18, 17:18    [21725588]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
4d_monster
Member

Откуда: Москва
Сообщений: 1615
msLex,

Да, так ещё точнее аналогия получается.
6 ноя 18, 17:20    [21725590]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
questioner
Member

Откуда:
Сообщений: 1878
alexeyvg
msLex
пропущено...


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

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

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

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


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


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

Меня в данном вопросе интересует чисто работа сервера базы данных.Не интересует работа работа приложения и трафик между ДБ и приложением. Интересует чисто время на подготовку ответа.
6 ноя 18, 17:49    [21725643]     Ответить | Цитировать Сообщить модератору
 Re: select * vs select count(*)  [new]
questioner
Member

Откуда:
Сообщений: 1878
msLex
questioner
Ок, тогда с вас правильное название этого термина)


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


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

Как на буржуйском это звучит?
6 ноя 18, 17:51    [21725645]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить