TP_Index
This commit is contained in:
parent
abbc31c8a1
commit
e2041ea33b
270
DATA_COMMANDE_OPTIMISATION.sql
Normal file
270
DATA_COMMANDE_OPTIMISATION.sql
Normal file
@ -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;
|
||||
|
425
TPS2_Index.txt
Normal file
425
TPS2_Index.txt
Normal file
@ -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;
|
419
connectDB(1)
Normal file
419
connectDB(1)
Normal file
@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user