Size: a a a

2020 July 03

ДО

Даниил Осипов... in learn.java
Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶
Вы не совсем понимаете. Вычислительная сложность сортировки nlog(n), вычислительная сложность топM n
Я не понимаю, в чём разница запросов то. И быстрый и медленный запрос должны работать одинково. Полностью отсортировать таблицу и выбрать 15 верхних записей
источник

A

Anton in learn.java
Даниил Осипов
Или обязаетельно debug нужен?
trace лучше.
Но я про пакет jdbc именно реализации драйвеоа говорю, а не про обертку jdbc.
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in learn.java
Даниил Осипов
Я не понимаю, в чём разница запросов то. И быстрый и медленный запрос должны работать одинково. Полностью отсортировать таблицу и выбрать 15 верхних записей
Нет.
Если планировщик знает, что выборка маленькая, он применяет оптимизацию - не сортирует всю таблицу, а просто выбирает нужное, а потом сортирует.
Если он не знает размер выборки, то строит план с полной сортировкой
источник

A

Anton in learn.java
Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶
Там не в каунтах дело. Каунт около секунды.
Там реально разные планы запросов
Этот несортированный count был около секунды. А pagable наверняка выполняет count со всем фаршем сорторовок и фильтров.
источник

ДО

Даниил Осипов... in learn.java
Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶
Нет.
Если планировщик знает, что выборка маленькая, он применяет оптимизацию - не сортирует всю таблицу, а просто выбирает нужное, а потом сортирует.
Если он не знает размер выборки, то строит план с полной сортировкой
Что значит "Выбирает нужное"? Если у меня нет условий запроса, он просто возьмёт случайные 15 записей?
источник

V

Vit in learn.java
Здравствуйте
источник

ДО

Даниил Осипов... in learn.java
Привет
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in learn.java
Даниил Осипов
Что значит "Выбирает нужное"? Если у меня нет условий запроса, он просто возьмёт случайные 15 записей?
Ну смотрите, min с условием выполнился за секунду.
min15 выполнится примерно за то же время
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in learn.java
На самом деле, это все решается добавлением индекса на namefull
источник

ДО

Даниил Осипов... in learn.java
Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶
Ну смотрите, min с условием выполнился за секунду.
min15 выполнится примерно за то же время
И?
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in learn.java
И планировщик так и строит план.
А когда он не знает размер выборки, он так не делает, т.к. выборка может быть соизмерима с размером таблицы
источник

ДО

Даниил Осипов... in learn.java
Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶
И планировщик так и строит план.
А когда он не знает размер выборки, он так не делает, т.к. выборка может быть соизмерима с размером таблицы
Так а как различается то размер выборки? Вот ему прилетает запрос с параметром. Он что, сразу не видит значение этого параметра и начинает сортировать всю таблицу?
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in learn.java
Даниил Осипов
Так а как различается то размер выборки? Вот ему прилетает запрос с параметром. Он что, сразу не видит значение этого параметра и начинает сортировать всю таблицу?
Тут есть тонкий момент - это prepared statement, т.е. план запроса строится до фактического запроса(с конкретными значениями параметров)
источник

ДО

Даниил Осипов... in learn.java
Даниил Осипов
Так а как различается то размер выборки? Вот ему прилетает запрос с параметром. Он что, сразу не видит значение этого параметра и начинает сортировать всю таблицу?
Так мне в итоге и нужна сортировка всей таблицы, при любом раскладе
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in learn.java
Даниил Осипов
Так мне в итоге и нужна сортировка всей таблицы, при любом раскладе
Нет, вам нужна маленькая выборка из первых скольких-то значений
источник

ДО

Даниил Осипов... in learn.java
Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶
Нет, вам нужна маленькая выборка из первых скольких-то значений
Почему из первых то?
источник

ДО

Даниил Осипов... in learn.java
Если будут только первые 15, то результат не правильный будет
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in learn.java
Даниил Осипов
Если будут только первые 15, то результат не правильный будет
Первых значений по полю namefull
источник

ДО

Даниил Осипов... in learn.java
Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶
Первых значений по полю namefull
Так по полю nameFull сначала сортировка идёт
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶... in learn.java
Даниил Осипов
Так по полю nameFull сначала сортировка идёт
Или не идёт. Выбрать минимальные/максимальные значения можно без сортировки
источник