Библиотека собеса по Java | вопросы с собеседований
6.48K subscribers
430 photos
11 videos
705 links
Вопросы с собеседований по Java и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: clc.to/3wECtA

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Что такое индекс в БД и почему он ускоряет поиск?

Индекс — это отдельная структура данных (чаще всего B-дерево), которая хранит отсортированные значения столбца со ссылками на соответствующие строки таблицы.

Благодаря сортировке поиск идёт за O(log n) вместо полного сканирования таблицы O(n). Это как алфавитный указатель в книге: не нужно читать всё подряд.

Цена: индекс занимает место на диске и замедляет INSERT/UPDATE/DELETE, потому что его тоже нужно поддерживать в актуальном состоянии. Поэтому индексируют столбцы, которые часто используются в WHERE, JOIN, ORDER BY, а не всё подряд.

🐸 Библиотека собеса по Java

#sql
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71🔥1
Что такое проблема N+1 и как её решить?

N+1 возникает при ленивой загрузке связанных сущностей в ORM. Чтобы получить список из N объектов, выполняется 1 запрос на сам список плюс по 1 запросу на подгрузку связи у каждого объекта — итого N+1 запросов.

Например, 100 заказов с ленивым клиентом → 1 запрос на заказы + 100 запросов на клиентов = 101 запрос вместо одного-двух. На больших объёмах это убивает производительность.

Решения:

JOIN FETCH или @EntityGraph, чтобы подтянуть связь одним запросом;
batch fetching, для загрузки связей пачками;
DTO-проекция одним запросом, без загрузки целых сущностей.

🐸 Библиотека собеса по Java

#sql
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥1👏1