Files
sql_advanced/lab2-11/tasks.sql
T
Vitalii Litvinchuk 6deed0469a first commit
2026-05-04 23:15:09 +03:00

316 lines
6.5 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
SELECT statement optimization in MySQL
Оптимізація пропозиції SELECT
У цій роботі слід застосувати техніки оптимізації запитів на основі оператора SELECT, а також побудувати індекси на основі стовпців для прискорення виконання запитів.
У роботі буде використано базу даних Lucky_Shrub. Слід оптимізувати запити, які звертаються до таблиць працівників (Employees) та замовлень (Orders).
Таблиця Orders містить таку інформацію:
OrderID - ідентифікатор замовлення
ClientID - ідентифікатор клієнта
ProductID - ідентифікатор продукту
Quantity - кількість одиниць продукту
Cost - вартість замовлення
Date - дата кожного замовлення
Таблиця Employees містить таку інформацію
EmployeeID - ідентифікатор працівника
FullName - повне імя працівника (містить, власне, імя та прізвище)
Role - роль працівника
Department - відділ працівника
Передумови
1: Створити базу даних, якщо не створено
CREATE DATABASE Lucky_Shrub;
2: Використати базу даних
USE Lucky_Shrub;
3: Створити таблицю Orders (якщо не створено;
якщо створено, тоді перевірити правильність схеми таблиці)
CREATE TABLE Orders (
OrderID INT NOT NULL,
ClientID VARCHAR(10) DEFAULT NULL,
ProductID VARCHAR(10) DEFAULT NULL,
Quantity INT DEFAULT NULL,
Cost DECIMAL(6, 2) DEFAULT NULL,
Date DATE DEFAULT NULL,
PRIMARY KEY (OrderID)
);
Для перевірки схеми можна використати команду
SHOW CREATE TABLE Orders;
4: Створити таблицю Employees (якщо не створено;
якщо створено, тоді перевірити правильність схеми таблиці)
CREATE TABLE Employees (
EmployeeID INT DEFAULT NULL,
FullName VARCHAR(100) DEFAULT NULL,
Role VARCHAR(50) DEFAULT NULL,
Department VARCHAR(255) DEFAULT NULL
);
Для перевірки схеми можна використати команду
SHOW CREATE TABLE Orders;
5: Вставте дані у таблицю Orders (якщо дані у таблиці є, перевірте чи відповідають вони запропонованим, за потреби підкоригуйте)
INSERT INTO
Orders (
OrderID,
ClientID,
ProductID,
Quantity,
Cost,
Date
)
VALUES (
1,
"Cl1",
"P1",
10,
500,
"2020-09-01"
),
(
2,
"Cl2",
"P2",
5,
100,
"2020-09-05"
),
(
3,
"Cl3",
"P3",
20,
800,
"2020-09-03"
),
(
4,
"Cl4",
"P4",
15,
150,
"2020-09-07"
),
(
5,
"Cl3",
"P3",
10,
450,
"2020-09-08"
),
(
6,
"Cl2",
"P2",
5,
800,
"2020-09-09"
),
(
7,
"Cl1",
"P4",
22,
1200,
"2020-09-10"
),
(
8,
"Cl3",
"P1",
15,
150,
"2020-09-10"
),
(
9,
"Cl1",
"P1",
10,
500,
"2020-09-12"
),
(
10,
"Cl2",
"P2",
5,
100,
"2020-09-13"
),
(
11,
"Cl1",
"P2",
15,
80,
"2020-09-12"
),
(
12,
"Cl1",
"P1",
10,
500,
"2022-09-01"
),
(
13,
"Cl2",
"P2",
5,
100,
"2022-09-05"
),
(
14,
"Cl3",
"P3",
20,
800,
"2022-09-03"
),
(
15,
"Cl4",
"P4",
15,
150,
"2022-09-07"
),
(
16,
"Cl3",
"P3",
10,
450,
"2022-09-08"
),
(
17,
"Cl2",
"P2",
5,
800,
"2022-09-09"
),
(
18,
"Cl1",
"P4",
22,
1200,
"2022-09-10"
),
(
19,
"Cl3",
"P1",
15,
150,
"2022-09-10"
),
(
20,
"Cl1",
"P1",
10,
500,
"2022-09-12"
),
(
21,
"Cl2",
"P2",
5,
100,
"2022-09-13"
),
(
22,
"Cl2",
"P1",
10,
500,
"2021-09-01"
),
(
23,
"Cl2",
"P2",
5,
100,
"2021-09-05"
),
(
24,
"Cl3",
"P3",
20,
800,
"2021-09-03"
),
(
25,
"Cl4",
"P4",
15,
150,
"2021-09-07"
),
(
26,
"Cl1",
"P3",
10,
450,
"2021-09-08"
),
(
27,
"Cl2",
"P1",
20,
1000,
"2022-09-01"
),
(
28,
"Cl2",
"P2",
10,
200,
"2022-09-05"
),
(
29,
"Cl3",
"P3",
20,
800,
"2021-09-03"
);
5: Імпортуйте дані у таблицю Employees скориставшись файлом MS Excel (https://docs.google.com/spreadsheets/d/14KHqSVEqqvaPXSRSlJdHwMUJlBt6VBtr?rtpof=true&authuser=yuriy.kotsyuk%40oa.edu.ua&usp=drive_fs). Для цього здійсніть експорт даних у формат csv з екселівського файлу, після чого здійсніть імпорт у таблицю бази даних.
LOAD DATA INFILE '/var/lib/mysql-files/Employees.csv' INTO
TABLE Employees FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES (
EmployeeID,
FullName,
Role,
Department,
@dummy
);
Перевірте наявність даних після операції імпорту