first commit
This commit is contained in:
@@ -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
|
||||
);
|
||||
|
||||
Перевірте наявність даних після операції імпорту
|
||||
Reference in New Issue
Block a user