From e2041ea33bef1b6f4fc36236b00c64b70918b919 Mon Sep 17 00:00:00 2001
From: raban <hugo.raban@etu.u-pec.fr>
Date: Fri, 7 Feb 2025 11:15:40 +0100
Subject: [PATCH] TP_Index

---
 DATA_COMMANDE_OPTIMISATION.sql | 270 +++++++++++++++++++++
 TPS2_Index.txt                 | 425 +++++++++++++++++++++++++++++++++
 connectDB(1)                   | 419 ++++++++++++++++++++++++++++++++
 3 files changed, 1114 insertions(+)
 create mode 100644 DATA_COMMANDE_OPTIMISATION.sql
 create mode 100644 TPS2_Index.txt
 create mode 100644 connectDB(1)

diff --git a/DATA_COMMANDE_OPTIMISATION.sql b/DATA_COMMANDE_OPTIMISATION.sql
new file mode 100644
index 0000000..1258321
--- /dev/null
+++ b/DATA_COMMANDE_OPTIMISATION.sql
@@ -0,0 +1,270 @@
+
+--DROP TABLE ligne_commande ;
+--DROP TABLE commande ;
+--DROP TABLE client ;
+--DROP TABLE produit;
+
+--
+-- Table structure for table client
+--
+
+
+	CREATE TABLE client4 (
+	  client_id NUMBER(10)  NOT NULL ,
+	  prenom varchar2(255) NOT NULL,
+	  nom varchar2(255) NOT NULL,
+	  email varchar2(255) NOT NULL,
+	  ville varchar2(255) NOT NULL,
+	  PRIMARY KEY (client_id)
+	);
+
+
+CREATE TABLE commande4 (
+  commande_id NUMBER(2)  NOT NULL ,
+  client_id NUMBER(10) ,
+  date_achat date NOT NULL,
+  reference varchar2(255) NOT NULL,
+  PRIMARY KEY (commande_id)
+);
+
+
+CREATE TABLE produit4 (
+produit_id NUMBER(2)	NOT NULL,
+nom_produit varchar2(255) NOT NULL,
+prix_unitaire NUMBER(10, 3) NOT NULL,
+	  PRIMARY KEY (produit_id)
+);
+
+-- la table ligne commande contient pour une commande donnée, tous les produits achetés lors de cette commande
+CREATE TABLE ligne_commande4 (
+  ligne_commande_id NUMBER(10)  NOT NULL ,
+  commande_id NUMBER(10) NOT NULL,
+  produit_id NUMBER(2)	NOT NULL,
+  quantite NUMBER(10) NOT NULL,
+  prix_total NUMBER(10, 3)  NOT NULL,
+	  PRIMARY KEY (ligne_commande_id)
+);
+
+
+
+
+--
+-- Dumping data for table client
+--
+REM INSERTING into client4
+SET DEFINE OFF;
+
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (1, 'Flavie', 'Da costa', 'f.da.costa@example.com', 'Pomoy');
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (2, 'Valentin', 'Vespasien', 'valentin@example.com', 'Buvilly');
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (3, 'Gustave', 'Collin', 'gust@example.com', 'Marseille');
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (4, 'Emilien', 'Camus', 'emilien@example.com', 'Toulouse');
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (5, 'Firmin', 'Marais', 'firmin.marais@example.com', 'Lyon');
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (6, 'Olivier', 'Riou', 'olive.de.lugagnac@example.com', 'Lugagnac');
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (7, 'Lucas', 'Jung', 'lucas.jung@example.com', 'Coulgens');
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (8, 'Maurice', 'Huet', 'maurice.villemareuil@example.com', 'Villemareuil');
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (9, 'Manon', 'Durand', 'm.durand.s.e@example.com', 'Saint-Etienne');
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (10, 'Joachim', 'Leon', 'joachim@example.com', 'Longwy-sur-le-Doubs');
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (11, 'Muriel', 'Dupuis', 'muriel@example.com', 'Paris');
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (12, 'Christiane', 'Riou', 'chritianelesabrets@example.com', 'Les Abrets');
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (13, 'Jacinthe', 'Langlois', 'jacinthe.langlois@example.com', 'Lagney');
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (14, 'Amaury', 'Payet', 'amaury@example.com', 'Avermes');
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (15, 'Maris', 'Buisson', 'maris@example.com', 'Le Havre');
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (16, 'Fabrice', 'Foucher', 'fab.montlouis@example.com', 'Montlouis');
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (17, 'Patrick', 'Saunier', 'patrick.saunier@example.com', 'Saligney');
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (18, 'Emile', 'Ramos', 'emile@example.com', 'Arzay');
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (19, 'Armel', 'Vigneron', 'armel.delain@example.com', 'Delain');
+INSERT INTO client4 (client_id, prenom, nom, email, ville) VALUES (20, 'Arnaude', 'Vallee', 'armaude.vallee@example.com', 'Hostias');
+COMMIT;
+
+REM INSERTING into commande4
+SET DEFINE OFF;
+
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (1, 20, TO_DATE('2019-01-01','YYYY-MM-DD'), '004214');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (2, 3, TO_DATE('2019-01-03','YYYY-MM-DD'), '007120');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (3, 11, TO_DATE('2019-01-04','YYYY-MM-DD'), '002957');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (4, 6, TO_DATE('2019-01-07','YYYY-MM-DD'), '003425');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (5, 17, TO_DATE('2019-01-08','YYYY-MM-DD'), '008255');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (6, 7, TO_DATE('2019-01-09','YYYY-MM-DD'), '000996');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (7, 2, TO_DATE('2019-01-10','YYYY-MM-DD'), '000214');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (8, 7, TO_DATE('2019-01-11','YYYY-MM-DD'), '008084');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (9, 12, TO_DATE('2019-01-11','YYYY-MM-DD'), '009773');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (10, 16, TO_DATE('2019-01-13','YYYY-MM-DD'), '004616');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (11, 4, TO_DATE('2019-01-14','YYYY-MM-DD'), '003757');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (12, 9, TO_DATE('2019-01-15','YYYY-MM-DD'), '004939');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (13, 14, TO_DATE('2019-01-16','YYYY-MM-DD'), '003421');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (14, 6, TO_DATE('2019-01-16','YYYY-MM-DD'), '002286');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (15, 3, TO_DATE('2019-01-17','YYYY-MM-DD'), '001167');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (16, 15, TO_DATE('2019-01-18','YYYY-MM-DD'), '008974');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (17, 9, TO_DATE('2019-01-19','YYYY-MM-DD'), '001369');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (18, 17, TO_DATE('2019-01-20','YYYY-MM-DD'), '009924');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (19, 3, TO_DATE('2019-01-21','YYYY-MM-DD'), '005510');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (20, 17, TO_DATE('2019-01-22','YYYY-MM-DD'), '007778');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (21, 17, TO_DATE('2019-01-23','YYYY-MM-DD'), '002359');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (22, 15, TO_DATE('2019-01-25','YYYY-MM-DD'), '008459');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (23, 4, TO_DATE('2019-01-27','YYYY-MM-DD'), '005217');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (24, 12, TO_DATE('2019-01-29','YYYY-MM-DD'), '000706');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (25, 9, TO_DATE('2019-02-01','YYYY-MM-DD'), '007879');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (26, 8, TO_DATE('2019-02-02','YYYY-MM-DD'), '007277');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (27, 11, TO_DATE('2019-02-02','YYYY-MM-DD'), '002745');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (28, 11, TO_DATE('2019-02-03','YYYY-MM-DD'), '001893');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (29, 20, TO_DATE('2019-02-04','YYYY-MM-DD'), '001230');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (30, 10, TO_DATE('2019-02-05','YYYY-MM-DD'), '000469');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (31, 7, TO_DATE('2019-02-05','YYYY-MM-DD'), '008653');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (32, 3, TO_DATE('2019-02-06','YYYY-MM-DD'), '001858');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (33, 14, TO_DATE('2019-02-07','YYYY-MM-DD'), '003330');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (34, 2, TO_DATE('2019-02-08','YYYY-MM-DD'), '001074');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (35, 5, TO_DATE('2019-02-08','YYYY-MM-DD'), '005379');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (36, 16, TO_DATE('2019-02-09','YYYY-MM-DD'), '003672');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (37, 10, TO_DATE('2019-02-09','YYYY-MM-DD'), '002220');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (38, 19, TO_DATE('2019-02-10','YYYY-MM-DD'), '000086');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (39, 8, TO_DATE('2019-02-11','YYYY-MM-DD'), '003770');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (40, 2, TO_DATE('2019-02-12','YYYY-MM-DD'), '008590');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (41, 2, TO_DATE('2019-02-12','YYYY-MM-DD'), '001639');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (42, 4, TO_DATE('2019-02-13','YYYY-MM-DD'), '002426');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (43, 13, TO_DATE('2019-02-14','YYYY-MM-DD'), '007209');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (44, 13, TO_DATE('2019-02-15','YYYY-MM-DD'), '008768');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (45, 7, TO_DATE('2019-02-16','YYYY-MM-DD'), '002213');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (46, 12, TO_DATE('2019-02-17','YYYY-MM-DD'), '004759');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (47, 19, TO_DATE('2019-02-18','YYYY-MM-DD'), '007155');
+INSERT INTO commande4 (commande_id, client_id, date_achat, reference) VALUES (48, 2, TO_DATE('2019-02-19','YYYY-MM-DD'), '001496');
+COMMIT;
+
+REM INSERTING into Produit4
+SET DEFINE OFF;
+INSERT INTO Produit4(produit_id, nom_produit, prix_unitaire)  VALUES (00, 'Produit0', 49.57);
+INSERT INTO Produit4(produit_id, nom_produit, prix_unitaire)  VALUES (01, 'Produit1', 10.99);
+INSERT INTO Produit4(produit_id, nom_produit, prix_unitaire)  VALUES (02, 'Produit2', 100.10);
+INSERT INTO Produit4(produit_id, nom_produit, prix_unitaire)  VALUES (03, 'Produit3', 20);
+INSERT INTO Produit4(produit_id, nom_produit, prix_unitaire)  VALUES (04, 'Produit4', 72.98);
+INSERT INTO Produit4(produit_id, nom_produit, prix_unitaire)  VALUES (05, 'Produit5', 9);
+INSERT INTO Produit4(produit_id, nom_produit, prix_unitaire)  VALUES (06, 'Produit6', 0.99);
+INSERT INTO Produit4(produit_id, nom_produit, prix_unitaire)  VALUES (07, 'Produit7', 44.50);
+INSERT INTO Produit4(produit_id, nom_produit, prix_unitaire)  VALUES (08, 'Produit8', 112);
+INSERT INTO Produit4(produit_id, nom_produit, prix_unitaire)  VALUES (09, 'Produit9', 5);
+COMMIT;
+
+REM INSERTING into ligne_commande4
+SET DEFINE OFF;
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (1, 1, 01, 3, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (2, 1, 09, 1,  0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (3, 1, 06, 2,  0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (4, 2, 05, 4,  0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (5, 2, 07, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (6, 3, 09, 7,  0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (7, 4, 03, 8,  0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (8, 4, 04, 10, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (9, 4, 07, 4,  0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (10, 4, 08, 9, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (11, 4, 09, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (12, 5, 00, 10, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (13, 5, 07, 2, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (14, 6, 01, 9, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (15, 7, 06, 2, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (16, 7, 07, 7,  0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (17, 7, 09, 3, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (18, 8, 05, 9,  0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (19, 9, 07, 10, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (20, 10, 02, 2, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (21, 10, 00, 5, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (22, 10, 06, 10,0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (23, 10, 01, 5, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (24, 11, 04, 5, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (25, 12, 02, 1, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (26, 12, 09, 7, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (27, 13, 03, 2, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (28, 13, 00, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (29, 14, 01, 7, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (30, 14, 00, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (31, 15, 07, 9, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (32, 15, 02, 8, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (33, 16, 02, 4, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (34, 17, 03, 10,0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (35, 17, 06, 2, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (36, 17, 04, 5, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (37, 17, 01, 10,0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (38, 18, 04, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (39, 18, 01, 8, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (40, 18, 03, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (41, 18, 02, 1, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (42, 19, 05, 8, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (43, 20, 01, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (44, 20, 04, 5, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (45, 20, 03, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (46, 21, 04, 5, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (47, 21, 07, 7, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (48, 22, 09, 3, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (49, 22, 01, 7, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (50, 22, 02, 9, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (51, 22, 06, 7, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (52, 22, 09, 4, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (53, 23, 00, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (54, 23, 08, 9, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (55, 23, 09, 10,0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (56, 24, 09, 1, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (57, 24, 08, 4, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (58, 24, 05, 4, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (59, 25, 00, 1, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (60, 25, 06, 10,0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (61, 26, 07, 8, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (62, 27, 01, 1, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (63, 27, 04, 7, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (64, 28, 05, 4, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (65, 28, 03, 9, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (66, 29, 09, 2, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (67, 29, 02, 9, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (68, 29, 06, 4, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (69, 30, 00, 8, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (70, 31, 03, 8, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (71, 31, 00, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (72, 32, 03, 7, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (73, 32, 05, 8, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (74, 32, 02, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (75, 32, 01, 5, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (76, 33, 00, 9, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (77, 33, 06, 9, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (78, 33, 03, 7, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (79, 34, 05, 10,0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (80, 35, 02, 8, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (81, 36, 03, 10,0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (82, 37, 06, 7, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (83, 37, 01, 2, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (84, 38, 01, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (85, 38, 02, 7, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (86, 39, 01, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (87, 39, 07, 9, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (88, 40, 06, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (89, 40, 03, 3, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (90, 41, 08, 5, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (91, 41, 06, 4, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (92, 42, 01, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (93, 42, 05, 8, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (94, 43, 04, 10,0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (95, 43, 03, 8, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (96, 44, 04, 10,0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (97, 44, 02, 5, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (98, 44, 09, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (99, 44, 00, 3, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (100, 44, 06, 4,0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (101, 45, 00, 3,0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (102, 45, 06, 2,0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (103, 45, 05, 10,0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (104, 45, 07, 5, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (105, 46, 04, 3, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (106, 46, 09, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (107, 46, 05, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (108, 46, 03, 8, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (109, 46, 02, 2, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (110, 47, 06, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (111, 47, 08, 6, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (112, 47, 09, 10,0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (113, 47, 01, 2, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (114, 47, 03, 7, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (115, 48, 04, 9, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (116, 48, 02, 5, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (117, 48, 03, 7, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (118, 48, 05, 9, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (119, 48, 09, 7, 0);
+INSERT INTO ligne_commande4 (ligne_commande_id, commande_id, produit_id, quantite, prix_total) VALUES (120, 48, 06, 4, 0);
+
+COMMIT;
+
diff --git a/TPS2_Index.txt b/TPS2_Index.txt
new file mode 100644
index 0000000..321e575
--- /dev/null
+++ b/TPS2_Index.txt
@@ -0,0 +1,425 @@
+sqlplus "username@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=lorien.arda.lan)(Port=1521))(CONNECT_DATA=(SID=ORCLIUT)))"
+
+select index_name from user_indexes where index_name not like 'SYS%’ and table_name =
+'EMP’;
+
+drop index <index_name> ;
+
+drop index ix_commande_id;
+
+exo 1 : 
+
+SQL> CREATE INDEX IX_INDEX_CLIENT
+ON CLIENT4(CLIENT_ID);  2  
+
+ERROR at line 2:
+ORA-01408: such column list already indexed
+
+ça ne marche pas car la donnée est une clé primaire, donc déjà indexé
+
+exo 2 : 
+
+SET AUTOTRACE ON
+
+1)
+
+SQL> SELECT * FROM LIGNE_COMMANDE4 WHERE COMMANDE_ID = 46;
+
+LIGNE_COMMANDE_ID COMMANDE_ID PRODUIT_ID   QUANTITE PRIX_TOTAL
+----------------- ----------- ---------- ---------- ----------
+	      109	   46	       2	  2	     0
+	      108	   46	       3	  8	     0
+	      105	   46	       4	  3	     0
+	      107	   46	       5	  6	     0
+	      106	   46	       9	  6	     0
+
+
+Execution Plan
+----------------------------------------------------------
+Plan hash value: 1619664265
+
+--------------------------------------------------------------------------------
+---------------
+
+| Id  | Operation		    | Name	      | Rows  | Bytes | Cost (%C
+PU)| Time     |
+
+--------------------------------------------------------------------------------
+---------------
+
+|   0 | SELECT STATEMENT	    |		      |     5 |    70 |     3
+(0)| 00:00:01 |
+
+|   1 |  TABLE ACCESS BY INDEX ROWID| LIGNE_COMMANDE4 |     5 |    70 |     3
+(0)| 00:00:01 |
+
+|*  2 |   INDEX RANGE SCAN	    | IX_COMMANDE_ID  |     5 |       |     2
+(0)| 00:00:01 |
+
+--------------------------------------------------------------------------------
+---------------
+
+
+Predicate Information (identified by operation id):
+---------------------------------------------------
+
+   2 - access("COMMANDE_ID"=46)
+
+
+Statistics
+----------------------------------------------------------
+	  0  recursive calls
+	  0  db block gets
+	  5  consistent gets
+	  0  physical reads
+	  0  redo size
+	656  bytes sent via SQL*Net to client
+	 41  bytes received via SQL*Net from client
+	  2  SQL*Net roundtrips to/from client
+	  0  sorts (memory)
+	  0  sorts (disk)
+	  5  rows processed
+
+
+
+2)
+
+SQL> CREATE INDEX ix_commande_id ON LIGNE_COMMANDE4(COMMANDE_ID, PRODUIT_ID);
+
+Index created.
+
+3)
+
+SQL> SELECT * FROM LIGNE_COMMANDE4 WHERE COMMANDE_ID = 46;
+
+LIGNE_COMMANDE_ID COMMANDE_ID PRODUIT_ID   QUANTITE PRIX_TOTAL
+----------------- ----------- ---------- ---------- ----------
+	      109	   46	       2	  2	     0
+	      108	   46	       3	  8	     0
+	      105	   46	       4	  3	     0
+	      107	   46	       5	  6	     0
+	      106	   46	       9	  6	     0
+
+
+Execution Plan
+----------------------------------------------------------
+Plan hash value: 1619664265
+
+--------------------------------------------------------------------------------
+---------------
+
+| Id  | Operation		    | Name	      | Rows  | Bytes | Cost (%C
+PU)| Time     |
+
+--------------------------------------------------------------------------------
+---------------
+
+|   0 | SELECT STATEMENT	    |		      |     5 |    70 |     3
+(0)| 00:00:01 |
+
+|   1 |  TABLE ACCESS BY INDEX ROWID| LIGNE_COMMANDE4 |     5 |    70 |     3
+(0)| 00:00:01 |
+
+|*  2 |   INDEX RANGE SCAN	    | IX_COMMANDE_ID  |     5 |       |     2
+(0)| 00:00:01 |
+
+--------------------------------------------------------------------------------
+---------------
+
+
+Predicate Information (identified by operation id):
+---------------------------------------------------
+
+   2 - access("COMMANDE_ID"=46)
+
+
+Statistics
+----------------------------------------------------------
+	  1  recursive calls
+	  0  db block gets
+	  5  consistent gets
+	  1  physical reads
+	  0  redo size
+	656  bytes sent via SQL*Net to client
+	 41  bytes received via SQL*Net from client
+	  2  SQL*Net roundtrips to/from client
+	  0  sorts (memory)
+	  0  sorts (disk)
+	  5  rows processed
+
+4)
+
+SQL> SELECT PRODUIT_ID FROM LIGNE_COMMANDE4 WHERE COMMANDE_ID = 46;
+
+PRODUIT_ID
+----------
+	 2
+	 3
+	 4
+	 5
+	 9
+
+
+Execution Plan
+----------------------------------------------------------
+Plan hash value: 2689148131
+
+--------------------------------------------------------------------------------
+---
+
+| Id  | Operation	 | Name 	  | Rows  | Bytes | Cost (%CPU)| Time
+  |
+
+--------------------------------------------------------------------------------
+---
+
+|   0 | SELECT STATEMENT |		  |	5 |    30 |	2   (0)| 00:00:0
+1 |
+
+|*  1 |  INDEX RANGE SCAN| IX_COMMANDE_ID |	5 |    30 |	2   (0)| 00:00:0
+1 |
+
+--------------------------------------------------------------------------------
+---
+
+
+Predicate Information (identified by operation id):
+---------------------------------------------------
+
+   1 - access("COMMANDE_ID"=46)
+
+
+Statistics
+----------------------------------------------------------
+	  1  recursive calls
+	  0  db block gets
+	  3  consistent gets
+	  0  physical reads
+	  0  redo size
+	389  bytes sent via SQL*Net to client
+	 41  bytes received via SQL*Net from client
+	  2  SQL*Net roundtrips to/from client
+	  0  sorts (memory)
+	  0  sorts (disk)
+	  5  rows processed
+
+5)
+
+Execution Plan
+----------------------------------------------------------
+Plan hash value: 2689148131
+
+--------------------------------------------------------------------------------
+---
+
+| Id  | Operation	 | Name 	  | Rows  | Bytes | Cost (%CPU)| Time
+  |
+
+--------------------------------------------------------------------------------
+---
+
+|   0 | SELECT STATEMENT |		  |	5 |    30 |	2   (0)| 00:00:0
+1 |
+
+|*  1 |  INDEX RANGE SCAN| IX_COMMANDE_ID |	5 |    30 |	2   (0)| 00:00:0
+1 |
+
+--------------------------------------------------------------------------------
+---
+
+6)
+
+La différence est liée à la colonne sélectionnée. Dans le cas de SELECT *, l'optimiseur peut choisir de scanner l'ensemble de la table pour récupérer toutes les données nécessaires. Par contre, dans la requête SELECT PRODUIT_ID, l'index sur COMMANDE_ID4 et PRODUIT_ID peut suffire à trouver les données, rendant la requête plus rapide et l'utilisation de l'index plus avantageuse.
+
+7)
+
+SQL> DROP INDEX ix_commande_id;
+
+Index dropped.
+
+8)
+
+SQL> CREATE INDEX ix_commande_produit_id ON LIGNE_COMMANDE4(PRODUIT_ID, COMMANDE_ID);
+
+Index created.
+
+9)
+
+SQL> SELECT * FROM LIGNE_COMMANDE4 WHERE COMMANDE_ID = 46;
+
+LIGNE_COMMANDE_ID COMMANDE_ID PRODUIT_ID   QUANTITE PRIX_TOTAL
+----------------- ----------- ---------- ---------- ----------
+	      105	   46	       4	  3	     0
+	      106	   46	       9	  6	     0
+	      107	   46	       5	  6	     0
+	      108	   46	       3	  8	     0
+	      109	   46	       2	  2	     0
+
+
+Execution Plan
+----------------------------------------------------------
+Plan hash value: 291854773
+
+--------------------------------------------------------------------------------
+-----
+
+| Id  | Operation	  | Name	    | Rows  | Bytes | Cost (%CPU)| Time
+    |
+
+--------------------------------------------------------------------------------
+-----
+
+|   0 | SELECT STATEMENT  |		    |	  5 |	 70 |	  6   (0)| 00:00
+:01 |
+
+|*  1 |  TABLE ACCESS FULL| LIGNE_COMMANDE4 |	  5 |	 70 |	  6   (0)| 00:00
+:01 |
+
+--------------------------------------------------------------------------------
+-----
+
+
+Predicate Information (identified by operation id):
+---------------------------------------------------
+
+   1 - filter("COMMANDE_ID"=46)
+
+
+Statistics
+----------------------------------------------------------
+	  1  recursive calls
+	  0  db block gets
+	 19  consistent gets
+	  0  physical reads
+	  0  redo size
+	656  bytes sent via SQL*Net to client
+	 41  bytes received via SQL*Net from client
+	  2  SQL*Net roundtrips to/from client
+	  0  sorts (memory)
+	  0  sorts (disk)
+	  5  rows processed
+
+10)
+
+Vous devriez remarquer que l'optimiseur peut choisir d'utiliser le nouvel index ix_commande_produit_id (qui est construit sur PRODUIT_ID et COMMANDE_ID). Selon l'ordre des colonnes dans l'index, cela peut affecter la façon dont les données sont récupérées.
+
+Différence potentielle : Si l'index est inversé dans l'ordre des colonnes par rapport à la requête initiale, cela peut affecter l'efficacité de la recherche et l'optimiseur peut choisir d'exécuter un Full Table Scan plutôt que d'utiliser l'index de manière optimale.
+
+11)
+
+SQL> SELECT PRODUIT_ID FROM LIGNE_COMMANDE4 WHERE COMMANDE_ID = 46;
+
+PRODUIT_ID
+----------
+	 2
+	 3
+	 4
+	 5
+	 9
+
+
+Execution Plan
+----------------------------------------------------------
+Plan hash value: 2559192091
+
+--------------------------------------------------------------------------------
+---------------
+
+| Id  | Operation	     | Name		      | Rows  | Bytes | Cost (%C
+PU)| Time     |
+
+--------------------------------------------------------------------------------
+---------------
+
+|   0 | SELECT STATEMENT     |			      |     5 |    30 |     2
+(0)| 00:00:01 |
+
+|*  1 |  INDEX FAST FULL SCAN| IX_COMMANDE_PRODUIT_ID |     5 |    30 |     2
+(0)| 00:00:01 |
+
+--------------------------------------------------------------------------------
+---------------
+
+
+Predicate Information (identified by operation id):
+---------------------------------------------------
+
+   1 - filter("COMMANDE_ID"=46)
+
+
+Statistics
+----------------------------------------------------------
+	  1  recursive calls
+	  0  db block gets
+	  6  consistent gets
+	  2  physical reads
+	  0  redo size
+	389  bytes sent via SQL*Net to client
+	 41  bytes received via SQL*Net from client
+	  2  SQL*Net roundtrips to/from client
+	  0  sorts (memory)
+	  0  sorts (disk)
+	  5  rows processed
+
+12)
+
+L'optimiseur peut utiliser l'index plus efficacement, étant donné que la requête ne demande que PRODUIT_ID. Si l'index ix_commande_produit_id est bien conçu, cela peut accélérer l'exécution de la requête.
+
+Conclusion :
+La manière dont les données sont récupérées dépend de la façon dont l'index est conçu et de l'ordre des colonnes dans la requête. Un index sur les bonnes colonnes peut améliorer considérablement les performances, notamment si la requête fait une recherche sur ces colonnes.
+
+13)
+
+SQL> DROP INDEX ix_commande_produit_id;                      
+
+Index dropped.
+
+
+Exo 3 : 
+
+1)
+SELECT c.NOM, SUM(l.MONTANT) AS MONTANT_TOTAL
+FROM CLIENT4 c
+JOIN COMMANDE4 co ON c.CLIENT_ID = co.CLIENT_ID
+JOIN LIGNE_COMMANDE4 l ON co.COMMANDE_ID = l.COMMANDE_ID
+GROUP BY c.CLIENT_ID, c.NOM;
+
+2)
+plan d'exécution :
+Après avoir exécuté la requête, observez le plan d'exécution. Vous devriez y voir :
+
+    Une jointure entre la table CLIENT et COMMANDE sur la colonne CLIENT_ID.
+    Une autre jointure entre COMMANDE et LIGNE_COMMANDE sur la colonne COMMANDE_ID.
+
+Méthode de jointure : Le type de jointure utilisé (par exemple, Nested Loop Join, Merge Join, Hash Join) dépend de plusieurs facteurs, notamment de l'ordre des tables dans la requête et de la présence ou non d'index. Si les données sont très volumineuses, un Hash Join ou Merge Join pourrait être préféré pour une meilleure performance.
+
+Accès aux données :
+
+    Si des index existent, la base de données pourrait utiliser des Index Seek pour accéder aux lignes spécifiques, ce qui améliore l'efficacité.
+    Sans index, des Full Table Scans pourraient être effectués, ce qui est moins optimal.
+3)
+
+    Index sur CLIENT_ID dans la table CLIENT pour accélérer la jointure avec la table COMMANDE.
+    Index sur COMMANDE_ID dans la table LIGNE_COMMANDE pour accélérer la jointure avec la table COMMANDE.
+    Index composite sur (CLIENT_ID, NOM) dans la table CLIENT pour optimiser la recherche des clients et faciliter le groupement par CLIENT_ID.
+
+Les requêtes pour créer ces index :
+
+CREATE INDEX ix_client_id ON CLIENT(CLIENT_ID);
+CREATE INDEX ix_commande_id ON COMMANDE(COMMANDE_ID);
+CREATE INDEX ix_ligne_commande_commande_id ON LIGNE_COMMANDE(COMMANDE_ID);
+CREATE INDEX ix_client_id_nom ON CLIENT(CLIENT_ID, NOM);
+
+4)
+Après avoir créé les index, réexécutez la requête et examinez à nouveau le plan d'exécution. Vous devriez observer les points suivants :
+
+    Utilisation des index : L'optimiseur de la base de données devrait désormais utiliser les index pour accéder plus rapidement aux tables, ce qui peut conduire à des Index Seek plutôt qu'à des Full Table Scans.
+    Amélioration des performances : Les statistiques devraient indiquer une amélioration significative du temps d'exécution de la requête si les index sont utilisés de manière efficace. Vous pouvez aussi vérifier les Coûts associés aux différentes étapes dans le plan d'exécution, qui devraient être plus bas.
+
+5)
+
+
+DROP INDEX ix_client_id ON CLIENT;
+DROP INDEX ix_commande_id ON COMMANDE;
+DROP INDEX ix_ligne_commande_commande_id ON LIGNE_COMMANDE;
+DROP INDEX ix_client_id_nom ON CLIENT;
\ No newline at end of file
diff --git a/connectDB(1) b/connectDB(1)
new file mode 100644
index 0000000..cab4f2b
--- /dev/null
+++ b/connectDB(1)
@@ -0,0 +1,419 @@
+exo 1
+sqlplus "raban@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=lorien.arda.lan)(Port=1521))(CONNECT_DATA=(SID=ORCLIUT)))"
+
+EXEC DBMS_STATS.GATHER_TABLE_STATS(USER, 'CLIENT')
+
+select TABLE_NAME, BLOCKS, EMPTY_BLOCKS, AVG_SPACE, CHAIN_CNT ,
+AVG_ROW_LEN, SAMPLE_SIZE, LAST_ANALYZED
+FROM user_tables
+WHERE TABLE_NAME='CLIENT';
+
+
+exo 2
+
+select * FROM COMMANDE3 WHERE REFERENCE = 008084;
+
+
+SET AUTOTRACE ON
+
+Execution Plan
+----------------------------------------------------------
+Plan hash value: 1042069817
+
+-------------------------------------------------------------------------------
+| Id  | Operation	  | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
+-------------------------------------------------------------------------------
+|   0 | SELECT STATEMENT  |	      |     1 |   164 |     6	(0)| 00:00:01 |
+|*  1 |  TABLE ACCESS FULL| COMMANDE3 |     1 |   164 |     6	(0)| 00:00:01 |
+-------------------------------------------------------------------------------
+
+Statistics
+----------------------------------------------------------
+	  0  recursive calls
+	  0  db block gets
+	 23  consistent gets
+	  0  physical reads
+	  0  redo size
+	513  bytes sent via SQL*Net to client
+	 41  bytes received via SQL*Net from client
+	  2  SQL*Net roundtrips to/from client
+	  0  sorts (memory)
+	  0  sorts (disk)
+	  1  rows processed
+
+rien ne change
+
+exo3
+
+SELECT ID,
+ROWID,
+DBMS_ROWID.ROWID_RELATIVE_FNO(rowid) FICHIER,
+DBMS_ROWID.ROWID_BLOCK_NUMBER(rowid) BLOC,
+DBMS_ROWID.ROWID_ROW_NUMBER(rowid) NUMLIGNE
+FROM COMMANDE3
+WHERE id = 10;
+
+
+	ID ROWID		 FICHIER       BLOC   NUMLIGNE
+---------- ------------------ ---------- ---------- ----------
+	 1 AAAzOFAAIAAAPz4AAA	       8      64760	     0
+	 2 AAAzOFAAIAAAPz4AAB	       8      64760	     1
+	 3 AAAzOFAAIAAAPz4AAC	       8      64760	     2
+	 4 AAAzOFAAIAAAPz4AAD	       8      64760	     3
+	 5 AAAzOFAAIAAAPz4AAE	       8      64760	     4
+	 6 AAAzOFAAIAAAPz4AAF	       8      64760	     5
+	 7 AAAzOFAAIAAAPz4AAG	       8      64760	     6
+	 8 AAAzOFAAIAAAPz4AAH	       8      64760	     7
+	 9 AAAzOFAAIAAAPz4AAI	       8      64760	     8
+	10 AAAzOFAAIAAAPz4AAJ	       8      64760	     9
+	11 AAAzOFAAIAAAPz4AAK	       8      64760	    10
+
+	ID ROWID		 FICHIER       BLOC   NUMLIGNE
+---------- ------------------ ---------- ---------- ----------
+	12 AAAzOFAAIAAAPz4AAL	       8      64760	    11
+	13 AAAzOFAAIAAAPz4AAM	       8      64760	    12
+	14 AAAzOFAAIAAAPz4AAN	       8      64760	    13
+	15 AAAzOFAAIAAAPz4AAO	       8      64760	    14
+	16 AAAzOFAAIAAAPz4AAP	       8      64760	    15
+	17 AAAzOFAAIAAAPz4AAQ	       8      64760	    16
+	18 AAAzOFAAIAAAPz4AAR	       8      64760	    17
+	19 AAAzOFAAIAAAPz4AAS	       8      64760	    18
+	20 AAAzOFAAIAAAPz4AAT	       8      64760	    19
+	21 AAAzOFAAIAAAPz4AAU	       8      64760	    20
+	22 AAAzOFAAIAAAPz4AAV	       8      64760	    21
+
+	ID ROWID		 FICHIER       BLOC   NUMLIGNE
+---------- ------------------ ---------- ---------- ----------
+	23 AAAzOFAAIAAAPz4AAW	       8      64760	    22
+	24 AAAzOFAAIAAAPz4AAX	       8      64760	    23
+	25 AAAzOFAAIAAAPz4AAY	       8      64760	    24
+	26 AAAzOFAAIAAAPz4AAZ	       8      64760	    25
+	27 AAAzOFAAIAAAPz4AAa	       8      64760	    26
+	28 AAAzOFAAIAAAPz4AAb	       8      64760	    27
+	29 AAAzOFAAIAAAPz4AAc	       8      64760	    28
+	30 AAAzOFAAIAAAPz4AAd	       8      64760	    29
+	31 AAAzOFAAIAAAPz4AAe	       8      64760	    30
+	32 AAAzOFAAIAAAPz4AAf	       8      64760	    31
+	33 AAAzOFAAIAAAPz4AAg	       8      64760	    32
+
+	ID ROWID		 FICHIER       BLOC   NUMLIGNE
+---------- ------------------ ---------- ---------- ----------
+	34 AAAzOFAAIAAAPz4AAh	       8      64760	    33
+	35 AAAzOFAAIAAAPz4AAi	       8      64760	    34
+	36 AAAzOFAAIAAAPz4AAj	       8      64760	    35
+	37 AAAzOFAAIAAAPz4AAk	       8      64760	    36
+	38 AAAzOFAAIAAAPz4AAl	       8      64760	    37
+	39 AAAzOFAAIAAAPz4AAm	       8      64760	    38
+	40 AAAzOFAAIAAAPz4AAn	       8      64760	    39
+	41 AAAzOFAAIAAAPz4AAo	       8      64760	    40
+	42 AAAzOFAAIAAAPz4AAp	       8      64760	    41
+	43 AAAzOFAAIAAAPz4AAq	       8      64760	    42
+	44 AAAzOFAAIAAAPz4AAr	       8      64760	    43
+
+	ID ROWID		 FICHIER       BLOC   NUMLIGNE
+---------- ------------------ ---------- ---------- ----------
+	45 AAAzOFAAIAAAPz4AAs	       8      64760	    44
+	46 AAAzOFAAIAAAPz4AAt	       8      64760	    45
+	47 AAAzOFAAIAAAPz4AAu	       8      64760	    46
+	48 AAAzOFAAIAAAPz4AAv	       8      64760	    47
+
+48 rows selected.
+
+
+Execution Plan
+----------------------------------------------------------
+Plan hash value: 2528279197
+
+--------------------------------------------------------------------------------
+------
+
+| Id  | Operation	     | Name	     | Rows  | Bytes | Cost (%CPU)| Time
+     |
+
+--------------------------------------------------------------------------------
+------
+
+|   0 | SELECT STATEMENT     |		     |	  48 |	1200 |	   2   (0)| 00:0
+0:01 |
+
+|   1 |  INDEX FAST FULL SCAN| SYS_C00136317 |	  48 |	1200 |	   2   (0)| 00:0
+0:01 |
+
+--------------------------------------------------------------------------------
+------
+
+
+Note
+-----
+   - dynamic sampling used for this statement
+
+
+Statistics
+----------------------------------------------------------
+	462  recursive calls
+	  0  db block gets
+	250  consistent gets
+	 39  physical reads
+	  0  redo size
+       2014  bytes sent via SQL*Net to client
+	 74  bytes received via SQL*Net from client
+	  5  SQL*Net roundtrips to/from client
+	 43  sorts (memory)
+	  0  sorts (disk)
+	 48  rows processed
+
+
+ROWID : id de l'index
+
+
+adresse physique :  AAAzOFAAIAAAPz4AAJ
+
+SELECT *
+FROM Commande3
+WHERE rowid = 'AAAzOFAAIAAAPz4AAJ';
+
+
+	ID  CLIENT_ID DATE_ACHA
+---------- ---------- ---------
+REFERENCE
+--------------------------------------------------------------------------------
+	10	   16 13-JAN-19
+004616
+
+
+
+Execution Plan
+----------------------------------------------------------
+Plan hash value: 3456971742
+
+--------------------------------------------------------------------------------
+--------
+
+| Id  | Operation		   | Name      | Rows  | Bytes | Cost (%CPU)| Ti
+me     |
+
+--------------------------------------------------------------------------------
+--------
+
+|   0 | SELECT STATEMENT	   |	       |     1 |   176 |     1	 (0)| 00
+:00:01 |
+
+|   1 |  TABLE ACCESS BY USER ROWID| COMMANDE3 |     1 |   176 |     1	 (0)| 00
+:00:01 |
+
+--------------------------------------------------------------------------------
+--------
+
+
+
+Statistics
+----------------------------------------------------------
+	  1  recursive calls
+	  0  db block gets
+	  1  consistent gets
+	  0  physical reads
+	  0  redo size
+	513  bytes sent via SQL*Net to client
+	 41  bytes received via SQL*Net from client
+	  2  SQL*Net roundtrips to/from client
+	  0  sorts (memory)
+	  0  sorts (disk)
+	  1  rows processed
+
+block : 64760 non
+
+Exo4
+
+CREATE INDEX ix_reference ON COMMANDE3(REFERENCE);
+
+SELECT REFERENCE
+FROM COMMANDE3
+WHERE REFERENCE = 008084;
+
+REFERENCE
+--------------------------------------------------------------------------------
+008084
+
+
+Execution Plan
+----------------------------------------------------------
+Plan hash value: 88607570
+
+--------------------------------------------------------------------------------
+-
+
+| Id  | Operation	 | Name 	| Rows	| Bytes | Cost (%CPU)| Time
+|
+
+--------------------------------------------------------------------------------
+-
+
+|   0 | SELECT STATEMENT |		|     1 |   129 |     1   (0)| 00:00:01
+|
+
+|*  1 |  INDEX FULL SCAN | IX_REFERENCE |     1 |   129 |     1   (0)| 00:00:01
+|
+
+--------------------------------------------------------------------------------
+-
+
+
+Predicate Information (identified by operation id):
+---------------------------------------------------
+
+   1 - filter(TO_NUMBER("REFERENCE")=008084)
+
+Note
+-----
+   - dynamic sampling used for this statement
+
+
+Statistics
+----------------------------------------------------------
+	  4  recursive calls
+	  0  db block gets
+	 26  consistent gets
+	  0  physical reads
+	  0  redo size
+	340  bytes sent via SQL*Net to client
+	 41  bytes received via SQL*Net from client
+	  2  SQL*Net roundtrips to/from client
+	  0  sorts (memory)
+	  0  sorts (disk)
+	  1  rows processed
+
+il y a l'index au lieu du tableau
+
+DROP INDEX ix_reference;
+
+CREATE INDEX ix_reference ON COMMANDE3(DATE_ACHAT, REFERENCE);
+
+SELECT DATE_ACHAT, REFERENCE
+FROM COMMANDE3
+WHERE REFERENCE = 008084;
+
+DATE_ACHA
+---------
+REFERENCE
+--------------------------------------------------------------------------------
+11-JAN-19
+008084
+
+
+
+Execution Plan
+----------------------------------------------------------
+Plan hash value: 88607570
+
+--------------------------------------------------------------------------------
+-
+
+| Id  | Operation	 | Name 	| Rows	| Bytes | Cost (%CPU)| Time
+|
+
+--------------------------------------------------------------------------------
+-
+
+|   0 | SELECT STATEMENT |		|     1 |   138 |     1   (0)| 00:00:01
+|
+
+|*  1 |  INDEX FULL SCAN | IX_REFERENCE |     1 |   138 |     1   (0)| 00:00:01
+|
+
+--------------------------------------------------------------------------------
+-
+
+
+Predicate Information (identified by operation id):
+---------------------------------------------------
+
+   1 - filter(TO_NUMBER("REFERENCE")=008084)
+
+Note
+-----
+   - dynamic sampling used for this statement
+
+
+Statistics
+----------------------------------------------------------
+	 85  recursive calls
+	  0  db block gets
+	 64  consistent gets
+	  0  physical reads
+	  0  redo size
+	404  bytes sent via SQL*Net to client
+	 41  bytes received via SQL*Net from client
+	  2  SQL*Net roundtrips to/from client
+	  0  sorts (memory)
+	  0  sorts (disk)
+	  1  rows processed
+
+SELECT DATE_ACHAT FROM COMMANDE3 WHERE REFERENCE = '008084';
+
+DATE_ACHA
+---------
+11-JAN-19
+
+
+Execution Plan
+----------------------------------------------------------
+Plan hash value: 88607570
+
+--------------------------------------------------------------------------------
+-
+
+| Id  | Operation	 | Name 	| Rows	| Bytes | Cost (%CPU)| Time
+|
+
+--------------------------------------------------------------------------------
+-
+
+|   0 | SELECT STATEMENT |		|     1 |   138 |     1   (0)| 00:00:01
+|
+
+|*  1 |  INDEX FULL SCAN | IX_REFERENCE |     1 |   138 |     1   (0)| 00:00:01
+|
+
+--------------------------------------------------------------------------------
+-
+
+
+Predicate Information (identified by operation id):
+---------------------------------------------------
+
+   1 - access("REFERENCE"='008084')
+       filter("REFERENCE"='008084')
+
+Note
+-----
+   - dynamic sampling used for this statement
+
+
+Statistics
+----------------------------------------------------------
+	  5  recursive calls
+	  0  db block gets
+	 26  consistent gets
+	  0  physical reads
+	  0  redo size
+	342  bytes sent via SQL*Net to client
+	 41  bytes received via SQL*Net from client
+	  2  SQL*Net roundtrips to/from client
+	  0  sorts (memory)
+	  0  sorts (disk)
+	  1  rows processed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+