first commit

This commit is contained in:
Vitalii Litvinchuk
2026-05-04 23:15:09 +03:00
commit 6deed0469a
49 changed files with 5366 additions and 0 deletions
+316
View File
@@ -0,0 +1,316 @@
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
);
Перевірте наявність даних після операції імпорту