
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
);

Перевірте наявність даних після операції імпорту