Організація пам'яті баз даних
Сторінка – основна одиниця зберігання інформації в SQLServer.
Організація пам'яті баз даних
Сторінки даних– містять більшу частину даних, котрі виводяться в таблиці. На сторінці даних знаходяться рядки даних з усіма даними, крім даних типу text, ntext, image, nvarchar(max), varchar(max) и varbinary(max).
Сторінки індексів– використовуються для прискорення доступу до даних. Містять списки значень одного чи кількох полів таблиці та його асоціації з номерами записів самої таблиці.
Екстент – основна одиниця розподілу пам'яті в Базі Даних.
Купа – таблиця, яка не має кластеризованого індексу.
Рядки даних зберігаються без певного порядку та будь-який порядок у послідовності сторінок даних відсутній.
Індекс – об'єкт бази даних, створюваний з метою підвищення продуктивності пошуку даних.
Прискорення роботи з використанням індексів досягається в першу чергу за рахунок того, що індекс має структуру, оптимізовану під пошук – наприклад, збалансованого дерева.
Типи індексів:
1. Кластеризований індекс
2. Некластеризований індекс:
• заданий на невпорядкованій таблиці
• заданий на кластеризованій таблиці
Кластерний індекс
Кластеризований індекс– упорядкований індекс, змішаний із даними. На сторінковому рівні знаходяться всі дійсні дані таблиці.
Некластеризований індекс на невпорядкованій таблиці
Некластеризований індекс – невпорядкований індекс, на листовому рівні якого знаходиться ідентифікатор рядка (RID), що вказує на місце зберігання інших даних.
Некластеризований індекс на кластеризованій таблиці
Q&A
Дякую всім за заняття!🙌🏻
❗️🎓Тема уроку: 6. Індексування
Нагадую, що дедлайн здачі домашніх робіт – до наступного уроку.
Якщо виникають складнощі, пишіть, допоможу із задоволенням 😌
Запис лекції тренер опублікує трохи пізніше 🖥
Не забудьте повторити матеріал та підготуватися до наступного уроку📚
Успіху і до зустрічі!🤩
Прості завдання:
Завдання 1: Список клієнтів та їх замовлень. Складіть SQL-запит, який виведе імена всіх клієнтів та ідентифікатори їхніх замовлень. Використовуйте таблиці Customers (з колонками CustomerID, FirstName, LastName) та Orders (з колонками OrderID, CustomerID).
Завдання 2: Товари та їх категорії. Напишіть SQL-запит, який покаже назви всіх товарів та назви категорій, до яких вони належать. Використовуйте таблиці Products (з колонками ProductID, ProductName, CategoryID) та Categories (з колонками CategoryID, CategoryName).
Завдання 3: Інформація про співробітників та їхні відділи. Складіть SQL-запит, щоб отримати імена всіх співробітників та назви відділів, в яких вони працюють. Використовуйте таблиці Employees (з колонками EmployeeID, FirstName, LastName, DepartmentID) та Departments (з колонками DepartmentID, DepartmentName).
Завдання середньої складності:
Завдання 4: Клієнти, які зробили замовлення. Напишіть SQL-запит, який виведе імена лише тих клієнтів, які мають хоча б одне замовлення. Використовуйте таблиці Customers та Orders (з попередніх завдань).
Завдання 5: Замовлення з інформацією про клієнта та товар. Складіть SQL-запит, щоб отримати ідентифікатор замовлення, ім'я клієнта, назву товару та кількість для кожного рядка в таблиці OrderDetails. Використовуйте таблиці Orders (з колонкою OrderID, CustomerID), Customers (з колонками CustomerID, FirstName, LastName), OrderDetails (з колонками OrderDetailID, OrderID, ProductID, Quantity), та Products (з колонками ProductID, ProductName).
Завдання 6: Співробітники та їхні керівники. Припустимо, у таблиці Employees є колонка ManagerID, яка вказує на ідентифікатор керівника співробітника (який також є співробітником). Напишіть SQL-запит, який виведе ім'я співробітника та ім'я його керівника. (Потрібен self-join).
Складніші завдання:
Завдання 7: Клієнти без замовлень. Напишіть SQL-запит, який виведе імена всіх клієнтів, які не мають жодного замовлення в таблиці Orders. Використовуйте таблиці Customers та Orders.
Завдання 8: Середня кількість товарів у замовленні для кожного клієнта. Складіть SQL-запит, щоб отримати ім'я кожного клієнта та середню кількість товарів у його замовленнях. Використовуйте таблиці Customers, Orders та OrderDetails. (Потрібне групування та агрегатні функції).
Завдання 9: Товари, які ніколи не були замовлені. Напишіть SQL-запит, який виведе назви всіх товарів, які не зустрічаються в таблиці OrderDetails. Використовуйте таблиці Products та OrderDetails.
Ці завдання допоможуть вам попрактикуватися з різними типами JOIN (INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN, SELF JOIN) та зрозуміти їхнє застосування у різних сценаріях. Бажаю успіху!