SQL Middle EXPLAIN и оптимизация спрашивают часто обновлено
Перепиши OFFSET-пагинацию на keyset
Условие
Каталог листается запросом с OFFSET, и на дальних страницах он тормозит. Последний товар на предыдущей странице: price = 3500, id = 6. Напиши запрос следующей страницы (3 товара) без OFFSET, по ключу последнего показанного товара. Сортировка та же: по цене, при равной цене по id.
Колонки: id, title, price. Порядок строк важен.
SELECT id, title, price
FROM products
ORDER BY price, id
LIMIT 3 OFFSET 5;
Как подойти
Подсказки: 2
- Продолжай с ключа последней строки, а не с номера строки.
- Сравнение кортежей:
(a, b) > (x, y).
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Перепиши NOT IN, который вернул пусто
Следующий вопрос
Перепиши фильтр по месяцу под индекс