172 похожих чатов

Ребята, как называется более легкий LIMIT? который не подгружает сначала

всю выдачу, а сразу обрубает

5 ответов

13 просмотров

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

В таком запросе select * from table limit 10 Вы итак получаете сразу 10 записей и только их. Другие не будут подниматься с диска. В таком запросе select * from table order by x limit 10 и есть индекс по x, то Pg снова прочитает только 10 строк и несколько страниц в индексе. Если индекса нет, то магии не будет, конечно, прочитается вся таблица, посортируется и возьмётся первые 10. В других СУБД думаю так же.

Aleksey Stavrov
В таком запросе select * from table limit 10 Вы ит...

Памяти на такую сортировку (последний случай) уйдёт гораздо меньше, чем на полный quicksort, который будет без limit, потому что сперва честно отсортируются 10 записей, затем БД пройдёт скользящим окном из этих 10 записей, вписывая новые строки только если они должны занять место до уже существующих строк.

Radist
Памяти на такую сортировку (последний случай) уйдё...

О, интересное замечание. Т.е. там, видимо, heap (структура данных). В него кладут и извлекают быстро за log от числа записей в heap. Так?

Aleksey Stavrov
О, интересное замечание. Т.е. там, видимо, heap (с...

За log2(число записей) можно найти в отсортированном массиве строку, в которую надо вставить следующую запись из неотсортированных данных (при этом, большая часть строк попадёт в конец массива и будет просто отброшена), сами данные строк, видимо, действительно в heap-е размещаются, в итоге. В итоге, сложность по сравнениям получается O(N*log2(m)), где N - общее число строк, а m = limit + offset, если m << N, это будет быстрее, чем делать честную сортировку всех данных, у которой сложность O(N*log2(N)). Я не читал исходники, если что, просто это очевидный путь к ускорению быстрого получения top m строк, как небольшое расширение получения top 1 строки.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта