Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 50 из 52 · 9 мин
Почему запрос тормозит и как база ищет быстро.
«Мои заказы» грузятся пять секунд. Что случилось?
Чтобы найти заказы покупателя, я читаю ВСЮ таблицу, строку за строкой. Дай мне индекс по customer_id — буду находить сразу, как по алфавитному указателю в книге.
SELECT indexname, indexdef
FROM pg_indexes
WHERE tablename = 'orders';CREATE INDEXCREATE INDEX имя ON таблица (столбцы);. Можно по нескольким столбцам и по выражению: ON customers (lower(email)).CREATE INDEX orders_customer_idx ON orders (customer_id);
SELECT indexname FROM pg_indexes WHERE tablename = 'orders';EXPLAINEXPLAIN запрос показывает, как база будет его выполнять: Seq Scan — перебор всей таблицы, Index Scan — по индексу. EXPLAIN ANALYZE ещё и выполняет запрос и показывает реальное время.EXPLAIN SELECT * FROM orders WHERE id = 5;Медленный запрос — сначала EXPLAIN ANALYZE, потом индекс. Внешние ключи, по которым часто ищут, почти всегда стоит индексировать.
Создай индекс orders_customer_idx на таблице orders по столбцу customer_id.
customer_id создан — пока нетcategories — категории товаровid, nameproducts — товарыid, name, category_id, price, weight_g, is_available, added_oncustomers — покупателиid, name, email, city, phone, birthday, registered_onstaff — сотрудникиid, name, role, salary, hired_on, manager_idorders — заказыid, customer_id, staff_id, created_at, statusorder_items — позиции заказовorder_id, product_id, quantity, unit_pricereviews — отзывыid, customer_id, product_id, rating, comment, created_onВыберите один ответ.
Чем платим за индекс?
Выберите один ответ.
Что значит Seq Scan в плане?
Проверяем состояние обучения…