Advertisement
Slightom

SBD_lista_6

Jan 17th, 2017
308
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 5.10 KB | None | 0 0
  1. -- zad1,2 -----------------------------------------------------------------------------------------------------------------------
  2. -- stworzenie przestrzeni tabel
  3. CREATE TABLESPACE tablespace2
  4. DATAFILE 'Dane_22dbf' SIZE 500M
  5. extent management LOCAL uniform SIZE 128k;
  6.  
  7. -- dodanie miejsca, niezbedne zeby moglo dodac 1000000 milion rekordow
  8. ALTER TABLESPACE tablespace2 ADD DATAFILE
  9.    'Dane_22.dbf' SIZE 200M
  10.    AUTOEXTEND ON MAXSIZE UNLIMITED;
  11.    
  12. -- wypisanie wszystkich przestrzeni tabel
  13. SELECT * FROM user_tablespaces;
  14.  
  15. -- usuniecie przestrzeni tabel
  16. DROP TABLESPACE tablespace2 INCLUDING CONTENTS AND Datafiles;
  17.  
  18.  
  19.  
  20. CREATE TABLE book
  21. (
  22.   id_book   INT PRIMARY KEY,
  23.   name      VARCHAR(30)
  24. ) TABLESPACE tablespace2;
  25.  
  26. CREATE TABLE userr
  27. (
  28.   id_user  INT PRIMARY KEY,
  29.   name     VARCHAR(30)
  30. ) TABLESPACE tablespace2;
  31.  
  32. CREATE TABLE borrow
  33. (
  34.   id      INT PRIMARY KEY,
  35.   id_user INT REFERENCES userr(id_user) ON DELETE cascade,
  36.   id_book INT REFERENCES book(id_book) ON DELETE cascade
  37. ) TABLESPACE tablespace2;
  38.  
  39.  
  40. BEGIN
  41.   FOR i IN 1..1000000 LOOP
  42.     INSERT INTO userr(id_user, name) VALUES (i, 'User nr ' || i);
  43.     INSERT INTO book(id_book, name)  VALUES (i, 'Book nr ' || i);    
  44.   END loop;
  45. END;
  46. /
  47.  
  48. BEGIN
  49.   FOR i IN 1..500000 LOOP
  50.     INSERT INTO borrow(id, id_user, id_book) VALUES(i, TRUNC(sys.DBMS_RANDOM.VALUE(1, 1000000)), TRUNC(sys.DBMS_RANDOM.VALUE(1, 1000000)));
  51.   END loop;
  52. END;
  53. /
  54.  
  55. SET SERVEROUTPUT ON
  56.    
  57. DECLARE
  58.   cz_poczatek NUMBER;
  59.   cz_koniec   NUMBER;
  60.   ilosc       NUMBER;
  61. BEGIN
  62.   cz_poczatek := DBMS_UTILITY.GET_TIME;
  63.   SELECT COUNT(*) INTO ilosc
  64.   FROM userr u, book b, borrow bu
  65.   WHERE u.id_user = bu.id_user AND bu.id_book=b.id_book AND bu.id_user=701771;
  66.   cz_koniec := DBMS_UTILITY.GET_TIME;
  67.   --DBMS_OUTPUT.PUT_LINE('czas trwania bez indeksów:' || TO_CHAR(cz_koniec-cz_poczatek) || ' ilość:' || ilosc);
  68.   DBMS_OUTPUT.PUT_LINE('czas trwania z indeksami:' || TO_CHAR(cz_koniec-cz_poczatek) || ' ilość:' || ilosc);
  69. END;
  70. /
  71.  
  72.  
  73.  
  74.  
  75.  
  76. CREATE INDEX indexborrowiduser ON
  77. borrow(id_user);
  78.  
  79. CREATE INDEX indexborrowidbook ON
  80. borrow(id_book);
  81.  
  82. DROP INDEX indexborrowiduser;
  83. DROP INDEX indexborrowidbook;
  84.  
  85.  
  86.  
  87.  
  88.  
  89. -- zad3,4,5 -----------------------------------------------------------------------------------------------------------------------
  90. -- stworzenie przestrzeni tabel
  91. CREATE TABLESPACE tablespace3
  92. DATAFILE 'Dane_33dbf' SIZE 500M
  93. extent management LOCAL uniform SIZE 128k;
  94.  
  95. -- dodanie miejsca, niezbedne zeby moglo dodac 1000000 milion rekordow
  96. ALTER TABLESPACE tablespace3 ADD DATAFILE
  97.    'Dane_33.dbf' SIZE 500M
  98.    AUTOEXTEND ON MAXSIZE UNLIMITED;
  99.    
  100. -- wypisanie wszystkich przestrzeni tabel
  101. SELECT * FROM user_tablespaces;
  102.  
  103. -- usuniecie przestrzeni tabel
  104. DROP TABLESPACE tablespace3 INCLUDING CONTENTS AND Datafiles cascade constraints ;
  105.  
  106.  
  107.  
  108. CREATE TABLE type2
  109. (
  110.   id_type INT PRIMARY KEY,
  111.   name     VARCHAR(30)
  112. ) TABLESPACE tablespace3;
  113.  
  114. CREATE TABLE author2
  115. (
  116.   id_author INT PRIMARY KEY,
  117.   name     VARCHAR(30)
  118. ) TABLESPACE tablespace3;
  119.  
  120. CREATE TABLE book2
  121. (
  122.   id_book   INT PRIMARY KEY,
  123.   name      VARCHAR(30),
  124.   id_type   INT REFERENCES type2(id_type)     ON DELETE cascade,
  125.   id_author INT REFERENCES author2(id_author) ON DELETE cascade
  126. ) TABLESPACE tablespace3;
  127.  
  128. CREATE TABLE user2
  129. (
  130.   id_user  INT PRIMARY KEY,
  131.   name     VARCHAR(30)
  132. ) TABLESPACE tablespace3;
  133.  
  134. CREATE TABLE borrow2
  135. (
  136.   id      INT PRIMARY KEY,
  137.   id_user INT REFERENCES user2(id_user) ON DELETE cascade,
  138.   id_book INT REFERENCES book2(id_book) ON DELETE cascade
  139. ) TABLESPACE tablespace3;
  140.  
  141.  
  142. BEGIN
  143.   FOR i IN 1..5 LOOP
  144.     INSERT INTO type2(id_type, name)   VALUES (i, 'Type nr ' || i);    
  145.     INSERT INTO author2(id_author, name) VALUES (i, 'Author nr ' || i);  
  146.   END loop;
  147. END;
  148. /
  149.  
  150. BEGIN
  151.   FOR i IN 1..1000000 LOOP
  152.     INSERT INTO user2(id_user, name) VALUES (i, 'User nr ' || i);
  153.     INSERT INTO book2(id_book, name, id_type, id_author)  VALUES (i, 'Book nr ' || i, TRUNC(sys.DBMS_RANDOM.VALUE(1, 5)), TRUNC(sys.DBMS_RANDOM.VALUE(1, 5)));    
  154.   END loop;
  155. END;
  156. /
  157.  
  158. BEGIN
  159.   FOR i IN 1..500000 LOOP
  160.     INSERT INTO borrow2(id, id_user, id_book) VALUES(i, TRUNC(sys.DBMS_RANDOM.VALUE(1, 1000000)), TRUNC(sys.DBMS_RANDOM.VALUE(1, 1000000)));
  161.   END loop;
  162. END;
  163. /
  164.  
  165. SELECT id_user, COUNT(1)
  166. FROM borrow2
  167. GROUP BY id_user
  168. ORDER BY COUNT(1) DESC;
  169.    
  170.    
  171. DECLARE
  172.   cz_poczatek NUMBER;
  173.   cz_koniec   NUMBER;
  174.   ilosc       NUMBER;
  175. BEGIN
  176.   cz_poczatek := DBMS_UTILITY.GET_TIME;
  177.   SELECT COUNT(*) INTO ilosc
  178.   FROM user2 u, book2 b, borrow2 bu, type2 t, author2 a
  179.   WHERE u.id_user = bu.id_user AND bu.id_book=b.id_book AND b.id_type=t.id_type AND b.id_author=a.id_author
  180.         AND bu.id_user=420483;
  181.   cz_koniec := DBMS_UTILITY.GET_TIME;
  182.   DBMS_OUTPUT.PUT_LINE('czas trwania bez indeksów:' || TO_CHAR(cz_koniec-cz_poczatek) || ' ilość:' || ilosc);
  183.   DBMS_OUTPUT.PUT_LINE('czas trwania z indeksami :' || TO_CHAR(cz_koniec-cz_poczatek) || ' ilość:' || ilosc);
  184. END;
  185. /
  186.  
  187. CREATE INDEX indexborrowiduser ON
  188. borrow2(id_user);
  189.  
  190. DROP INDEX indexborrowiduser;
  191.  
  192. CREATE INDEX indexborrowidbook ON
  193. borrow2(id_book);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement