Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2020
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.65 KB | None | 0 0
  1. import java.sql.*;
  2. import java.util.*;
  3.  
  4. public class Main {
  5.  
  6. public static void main(String[] args) throws SQLException {
  7. Connection db = DriverManager.getConnection("jdbc:sqlite:paketit.db");
  8. Scanner lukija = new Scanner(System.in);
  9.  
  10. while (true) {
  11. System.out.println("Valitse toiminto (1-9): ");
  12. System.out.println("1-luo tietokanta"); //luo tietokannan
  13. System.out.println("2-lisää paikkatieto"); //lisää tiedon paikasta
  14. System.out.println("3-lisää asikastieto"); //lisää tiedon asiakkaasta
  15. System.out.println("4-lisää pakettitieto"); //lisää tiedon paketista
  16. System.out.println("5-lisää tapahtumatieto"); //lisää tapahtuman
  17. System.out.println("6-hae paketin reitti"); //hakee seurantakoodilla sijainnit ja aikaleimat
  18. System.out.println("7-hae paketit asiakkaan nimellä"); //hakee paketit asiakkaan nimellä
  19. System.out.println("8-hae tapahtumat paikalla ja päivällä"); //hakee tapahtumien määrän paikalla ja päivällä
  20. System.out.println("9-suorita tehokkuustesti ilman indeksejä"); //suorittaa tehokkkuustestin
  21. System.out.println("10-suorita tehokkustesti indekseillä");
  22. System.out.println("x-lopeta ohjelma"); //lopeta ohjelma
  23. System.out.print(">> ");
  24. String komento = lukija.nextLine();
  25.  
  26. if (komento.equals("1")) {
  27. luoTietokanta(lukija);
  28. } else if (komento.equals("2")) {
  29. lisaaPaikkatieto(lukija);
  30. } else if (komento.equals("3")) {
  31. lisaaAsiakastieto(lukija);
  32. } else if (komento.equals("4")) {
  33. lisaaPakettitieto(lukija);
  34. } else if (komento.equals("5")) {
  35. lisaaTapahtuma(lukija);
  36. } else if (komento.equals("6")) {
  37. haePaketinTapahtumat(lukija);
  38. } else if (komento.equals("7")) {
  39. haePaketit(lukija);
  40. } else if (komento.equals("8")) {
  41. haePaikanTapahtumat(lukija);
  42. } else if (komento.equals("9")) {
  43. tehokkuustestiIlmanIndekseja();
  44. } else if (komento.equals("10")) {
  45. tehokkuustestiIndekseilla();
  46. } else if (komento.equals("x")) {
  47. break;
  48. }
  49. }
  50. }
  51.  
  52. private static void luoTietokanta(Scanner lukija) throws SQLException {
  53. //Toiminto 1-luo tietokanta
  54. Connection db = DriverManager.getConnection("jdbc:sqlite:paketit.db");
  55. Statement s = db.createStatement();
  56.  
  57. s.execute("CREATE TABLE Paikat (id INTEGER PRIMARY KEY, nimi TEXT UNIQUE)");
  58. s.execute("CREATE TABLE Asiakkaat (id INTEGER PRIMARY KEY, nimi TEXT UNIQUE)");
  59. s.execute("CREATE TABLE Tapahtumat (id INTEGER PRIMARY KEY, kuvaus TEXT, "
  60. + "paketti_id INTEGER REFERENCES Paketit, paikka_id INTEGER "
  61. + "REFERENCES Paikat, aika TEXT)");
  62. s.execute("CREATE TABLE Paketit (id INTEGER PRIMARY KEY, koodi TEXT UNIQUE,"
  63. + " asiakas_id INTEGER REFERENCES Asiakkaat)");
  64. System.out.println("Tietokanta luotu");
  65. System.out.println("");
  66. }
  67.  
  68. private static void lisaaPaikkatieto(Scanner lukija) throws SQLException {
  69. //Toiminto 2-lisää paikkatieto
  70. Connection db = DriverManager.getConnection("jdbc:sqlite:paketit.db");
  71.  
  72. System.out.print("Anna paikan nimi: ");
  73. String paikka = lukija.nextLine();
  74.  
  75. try {
  76. PreparedStatement p = db.prepareStatement("INSERT INTO Paikat(nimi) VALUES (?)");
  77. p.setString(1,paikka);
  78. p.executeUpdate();
  79. System.out.println("Paikka lisätty");
  80. System.out.println("");
  81.  
  82. } catch (Exception e) {
  83. System.out.println("VIRHE: paikka on jo olemassa");
  84. System.out.println("");
  85. }
  86. db.close();
  87.  
  88. }
  89.  
  90. private static void lisaaAsiakastieto(Scanner lukija) throws SQLException {
  91. //Toiminto 3-lisää asikastieto
  92. Connection db = DriverManager.getConnection("jdbc:sqlite:paketit.db");
  93.  
  94. System.out.print("Anna asiakkaan nimi: ");
  95. String asiakas = lukija.nextLine();
  96.  
  97. try {
  98.  
  99. PreparedStatement p = db.prepareStatement("INSERT INTO Asiakkaat(nimi) VALUES (?)");
  100. p.setString(1,asiakas);
  101. p.executeUpdate();
  102. System.out.println("Asiakas lisätty");
  103. System.out.println("");
  104.  
  105. } catch (Exception e) {
  106. System.out.println("VIRHE: asiakas on jo olemassa");
  107. System.out.println("");
  108. }
  109. db.close();
  110.  
  111. }
  112.  
  113. private static void lisaaPakettitieto(Scanner lukija) throws SQLException {
  114. //Toiminto 4-lisää paketti (paketin seurantakoodi ja asiakas)
  115. Connection db = DriverManager.getConnection("jdbc:sqlite:paketit.db");
  116. System.out.print("Anna paketin seurantakoodi: ");
  117. String koodi = lukija.nextLine();
  118. System.out.print("Anna asiakkaan nimi: ");
  119. String asiakas = lukija.nextLine();
  120.  
  121. try {
  122.  
  123. PreparedStatement p = db.prepareStatement("SELECT id FROM Asiakkaat WHERE nimi=?");
  124. p.setString(1,asiakas);
  125. ResultSet r = p.executeQuery();
  126.  
  127. if (r.next()) {
  128. PreparedStatement q = db.prepareStatement("INSERT INTO Paketit(koodi,asiakas_id) VALUES (?,?)");
  129. q.setString(1,koodi);
  130. q.setInt(2,r.getInt("id"));
  131. q.executeUpdate();
  132. System.out.println("Paketti lisätty");
  133. System.out.println("");
  134. } else {
  135. System.out.println("Asiakasta ei löydy.");
  136. System.out.println("");
  137. }
  138.  
  139. } catch (Exception e) {
  140. System.out.println("Tapahtui tietokantavirhe!");
  141. System.out.println("");
  142. }
  143. db.close();
  144. }
  145.  
  146. private static void lisaaTapahtuma(Scanner lukija) throws SQLException {
  147. //Toiminto 5-lisää tapahtumatieto
  148. Connection db = DriverManager.getConnection("jdbc:sqlite:paketit.db");
  149.  
  150. try {
  151. System.out.print("Anna paketin seurantakoodi: ");
  152. String koodi = lukija.nextLine();
  153.  
  154. PreparedStatement seurantakoodi = db.prepareStatement("SELECT id FROM Paketit WHERE koodi=?");
  155. seurantakoodi.setString(1,koodi);
  156. ResultSet paketinID = seurantakoodi.executeQuery();
  157.  
  158. if (paketinID.next()) {
  159. System.out.print("Anna tapahtuman paikka: ");
  160. String paikka = lukija.nextLine();
  161.  
  162. PreparedStatement mesta = db.prepareStatement("SELECT id FROM Paikat WHERE nimi=?");
  163. mesta.setString(1,paikka);
  164. ResultSet paikkaID = mesta.executeQuery();
  165. if (paikkaID.next()) {
  166. System.out.print("Anna tapahtuman kuvaus: ");
  167. String kuvaus = lukija.nextLine();
  168.  
  169. PreparedStatement tapahtuma = db.prepareStatement("INSERT INTO Tapahtumat(kuvaus,paketti_id,paikka_id,aika) VALUES (?,?,?,datetime('now'))");
  170. tapahtuma.setString(1,kuvaus);
  171. tapahtuma.setInt(2,paketinID.getInt("id"));
  172. tapahtuma.setInt(3,paikkaID.getInt("id"));
  173.  
  174. tapahtuma.executeUpdate();
  175. System.out.println("Tapahtuma lisätty");
  176. System.out.println("");
  177. } else {
  178. System.out.println("VIRHE: Paikkaa ei ole olemassa");
  179. System.out.println("");
  180. }
  181. } else {
  182. System.out.println("Seurantakoodia ei löydy.");
  183. System.out.println("");
  184. }
  185.  
  186. } catch (Exception e) {
  187. System.out.println("Tapahtui tietokantavirhe!"+ e.getMessage());
  188. System.out.println("");
  189. }
  190. db.close();
  191.  
  192. }
  193.  
  194. private static void haePaketinTapahtumat(Scanner lukija) throws SQLException {
  195. //Toiminto 6-hae paketin tapahtumat
  196. Connection db = DriverManager.getConnection("jdbc:sqlite:paketit.db");
  197.  
  198. System.out.print("Anna paketin seurantakoodi: ");
  199. String haluttuPaketti = lukija.nextLine();
  200.  
  201. PreparedStatement p = db.prepareStatement("SELECT Tapahtumat.aika, Paikat.nimi, Tapahtumat.kuvaus FROM Tapahtumat, Paikat, Paketit WHERE Paketit.id = Tapahtumat.paketti_id AND Paikat.id = Tapahtumat.paikka_id AND Paketit.koodi = ?");
  202. p.setString(1, haluttuPaketti);
  203. ResultSet r = p.executeQuery();
  204.  
  205. while (r.next()) {
  206. System.out.println(r.getString("aika")+", "+r.getString("nimi")+", "+r.getString("kuvaus"));
  207. }
  208. System.out.println("");
  209. db.close();
  210. }
  211.  
  212. private static void haePaketit(Scanner lukija) throws SQLException {
  213. //Toiminto 7-hae paketit asiakkaan nimellä
  214. Connection db = DriverManager.getConnection("jdbc:sqlite:paketit.db");
  215.  
  216. System.out.print("Anna asiakkaan nimi: ");
  217. String asiakas = lukija.nextLine();
  218.  
  219. PreparedStatement p = db.prepareStatement("SELECT Paketit.koodi, COUNT(Tapahtumat.id) AS maara FROM Paketit LEFT JOIN Tapahtumat ON Paketit.id = Tapahtumat.paketti_id LEFT JOIN Asiakkaat ON Paketit.asiakas_id = Asiakkaat.id WHERE Asiakkaat.nimi = ? GROUP BY Paketit.id");
  220. p.setString(1, asiakas);
  221. ResultSet r = p.executeQuery();
  222.  
  223. while (r.next()) {
  224. System.out.println(r.getString("koodi")+", "+r.getInt("maara")+" tapahtumaa");
  225. }
  226.  
  227. System.out.println("");
  228. db.close();
  229. }
  230.  
  231. private static void haePaikanTapahtumat(Scanner lukija) throws SQLException {
  232. //Toiminto 8-hae tapahtumat paikalla ja päivällä
  233. Connection db = DriverManager.getConnection("jdbc:sqlite:paketit.db");
  234.  
  235. System.out.print("Anna paikan nimi: ");
  236. String paikka = lukija.nextLine();
  237. System.out.print("Anna päivämäärä (YYYY-MM-DD): ");
  238. String pvm = lukija.nextLine();
  239.  
  240. PreparedStatement p = db.prepareStatement("SELECT COUNT(Tapahtumat.id) AS tapahtumia FROM Tapahtumat LEFT JOIN Paikat ON Tapahtumat.paikka_id = Paikat.id WHERE Tapahtumat.aika LIKE ? AND Paikat.nimi=?");
  241. p.setString(1, pvm+'%');
  242. p.setString(2, paikka);
  243. ResultSet r = p.executeQuery();
  244.  
  245. System.out.println("Tapahtumien määrä: "+r.getInt("tapahtumia"));
  246. System.out.println("");
  247. db.close();
  248. }
  249.  
  250. private static void tehokkuustestiIlmanIndekseja() throws SQLException {
  251. //LUO TIETOKANTA
  252. long aika1 = System.nanoTime();
  253.  
  254. Connection db = DriverManager.getConnection("jdbc:sqlite:tehokkuustestiIlmanIndeksejaKanta.db");
  255. Statement s = db.createStatement();
  256.  
  257. s.execute("CREATE TABLE Paikat (id INTEGER PRIMARY KEY, nimi TEXT UNIQUE)");
  258. s.execute("CREATE TABLE Asiakkaat (id INTEGER PRIMARY KEY, asNimi TEXT UNIQUE)");
  259. s.execute("CREATE TABLE Tapahtumat (id INTEGER PRIMARY KEY, kuvaus TEXT, "
  260. + "paketti_id INTEGER REFERENCES Paketit, paikka_id INTEGER "
  261. + "REFERENCES Paikat, aika TEXT)");
  262. s.execute("CREATE TABLE Paketit (id INTEGER PRIMARY KEY, koodi TEXT UNIQUE,"
  263. + " asiakas_id INTEGER REFERENCES Asiakkaat)");
  264.  
  265. //LISÄÄ TUHAT PAIKKAA P1
  266. long paikkaAika1 = System.nanoTime();
  267.  
  268. String paikka;
  269. s.execute("BEGIN TRANSACTION");
  270. PreparedStatement p = db.prepareStatement("INSERT INTO Paikat(nimi) VALUES (?)");
  271. for (int i=1; i<1001; i++) {
  272. paikka="P"+i;
  273. p.setString(1, paikka);
  274. p.executeUpdate();
  275. //System.out.println("Paikan nimi: "+paikka);
  276. }
  277. long paikkaAika2 = System.nanoTime();
  278. System.out.println("1000 paikan lisäämiseen kului "+(paikkaAika2-paikkaAika1)/1e9+" sekuntia");
  279.  
  280. //LISÄÄ TUHAT ASIAKASTA A1
  281. long asiakasAika1 = System.nanoTime();
  282.  
  283. String asiakas;
  284. PreparedStatement q = db.prepareStatement("INSERT INTO Asiakkaat(asNimi) VALUES (?)");
  285. for (int j=1; j<1001; j++) {
  286. asiakas="A"+j;
  287. q.setString(1,asiakas);
  288. q.executeUpdate();
  289. //System.out.println("Asiakkaan nimi: "+asiakas);
  290. }
  291. long asiakasAika2 = System.nanoTime();
  292. System.out.println("1000 asiakkaan lisäämiseen kului "+(asiakasAika2-asiakasAika1)/1e9+" sekuntia");
  293.  
  294. //LISÄÄ TUHAT PAKETTIA, JOKAISELLE ASIAKAS
  295. long pakettiAika1 = System.nanoTime();
  296.  
  297. String paketti;
  298. for (int k=1; k<1001; k++) {
  299. paketti = "S"+k;
  300. PreparedStatement r = db.prepareStatement("INSERT INTO Paketit(koodi,asiakas_id) VALUES (?,?)");
  301. r.setString(1,paketti);
  302. r.setInt(2,k);
  303. r.executeUpdate();
  304. //System.out.println("Paketin numero: "+paketti);
  305. }
  306. long pakettiAika2 = System.nanoTime();
  307. System.out.println("1000 paketin lisäämiseen kului "+(pakettiAika2-pakettiAika1)/1e9+" sekuntia");
  308.  
  309. //LISÄÄ MILJOONA TAPAHTUMA, JOKAISELLE PAKETTI
  310. long tapahtumaAika1 = System.nanoTime();
  311.  
  312. Random random = new Random();
  313. for (int l=1; l<1000001; l++) {
  314. PreparedStatement tapahtuma = db.prepareStatement("INSERT INTO Tapahtumat(paketti_id) VALUES (?)");
  315. int satunnainen = random.nextInt(1000);
  316. String satunnainenPaketti = "S"+satunnainen;
  317. tapahtuma.setInt(1, satunnainen);
  318.  
  319. tapahtuma.executeUpdate();
  320. //System.out.println("Tapahtuman paketti: "+satunnainenPaketti);
  321.  
  322. }
  323. s.execute("COMMIT");
  324. long tapahtumaAika2 = System.nanoTime();
  325. System.out.println("1 000 000 tapahtuman lisäämisen kului "+(tapahtumaAika2-tapahtumaAika1)/1e9+" sekuntia");
  326.  
  327. //KYSELE TUHAT ASIAKKAIDEN PAKETTIMÄÄRISTÄ
  328. long pakettiKyselyAika1 = System.nanoTime();
  329. s.execute("BEGIN TRANSACTION");
  330.  
  331. for (int m=1; m<1000; m++) {
  332. String hakuAsiakas = "A"+m;
  333. PreparedStatement haePaketit = db.prepareStatement("SELECT Asiakkaat.asNimi, COUNT(Paketit.id) AS maara FROM Paketit LEFT JOIN Tapahtumat ON Paketit.id = Tapahtumat.paketti_id LEFT JOIN Asiakkaat ON Paketit.asiakas_id = Asiakkaat.id WHERE Asiakkaat.asNimi = ? GROUP BY Asiakkaat.id");
  334. p.setString(1, hakuAsiakas);
  335. //ResultSet tulosAsiakkaat = haePaketit.executeQuery();
  336. //System.out.println("Haun asiakkaan nimi: "+hakuAsiakas);
  337.  
  338. }
  339. s.execute("COMMIT");
  340. long pakettiKyselyAika2 = System.nanoTime();
  341. System.out.println("1000 asiakkaan pakettien kyselyyn kului "+(pakettiKyselyAika2-pakettiKyselyAika1)/1e9+" sekuntia");
  342.  
  343. //KYSELE TUHAT KERTAA JONKUN PAKETIN TAPAHTUMIA
  344. long tapahtumaKyselyAika1 = System.nanoTime();
  345. s.execute("BEGIN TRANSACTION");
  346.  
  347. for (int m=1; m<1000; m++) {
  348. String hakuPaketti = "P"+m;
  349. PreparedStatement haeTapahtumat = db.prepareStatement("SELECT Paketit.koodi, COUNT(Tapahtumat.id) AS maara FROM Paketit LEFT JOIN Tapahtumat ON Paketit.id = Tapahtumat.paketti_id WHERE Paketit.koodi = ? GROUP BY Paketit.id");
  350. p.setString(1, hakuPaketti);
  351. //ResultSet tulosPaketit = haeTapahtumat.executeQuery();
  352. //System.out.println("Haun paketti: "+hakuPaketti);
  353.  
  354. }
  355. s.execute("COMMIT");
  356. long tapahtumaKyselyAika2 = System.nanoTime();
  357. System.out.println("1000 paketin tapahtumien kyselyyn kului "+(tapahtumaKyselyAika2-tapahtumaKyselyAika1)/1e9+" sekuntia");
  358.  
  359. System.out.println("");
  360.  
  361. long aika2 = System.nanoTime();
  362. System.out.println("Aikaa kului "+(aika2-aika1)/1e9+" sekuntia");
  363.  
  364. }
  365.  
  366. private static void tehokkuustestiIndekseilla() throws SQLException {
  367. //LUO TIETOKANTA
  368. long aika1 = System.nanoTime();
  369.  
  370. Connection db = DriverManager.getConnection("jdbc:sqlite:tehokkuustestiIndekseillaKanta.db");
  371. Statement s = db.createStatement();
  372.  
  373. s.execute("CREATE TABLE Paikat (id INTEGER PRIMARY KEY, nimi TEXT UNIQUE)");
  374. s.execute("CREATE TABLE Asiakkaat (id INTEGER PRIMARY KEY, asNimi TEXT UNIQUE)");
  375. s.execute("CREATE TABLE Tapahtumat (id INTEGER PRIMARY KEY, kuvaus TEXT, "
  376. + "paketti_id INTEGER REFERENCES Paketit, paikka_id INTEGER "
  377. + "REFERENCES Paikat, aika TEXT)");
  378. s.execute("CREATE TABLE Paketit (id INTEGER PRIMARY KEY, koodi TEXT UNIQUE,"
  379. + " asiakas_id INTEGER REFERENCES Asiakkaat)");
  380. s.execute("CREATE INDEX idx_paiknimi ON Paikat (nimi)");
  381. s.execute("CREATE INDEX idx_asnimi ON Asiakkaat (asNimi)");
  382. s.execute("CREATE INDEX idx_koodi ON Paketit (koodi)");
  383. s.execute("CREATE INDEX idx_tapahtuma ON Tapahtumat (paketti_id)");
  384.  
  385. //LISÄÄ TUHAT PAIKKAA P1
  386. long paikkaAika1 = System.nanoTime();
  387.  
  388. String paikka;
  389. s.execute("BEGIN TRANSACTION");
  390. PreparedStatement p = db.prepareStatement("INSERT INTO Paikat(nimi) VALUES (?)");
  391. for (int i=1; i<1001; i++) {
  392. paikka="P"+i;
  393. p.setString(1, paikka);
  394. p.executeUpdate();
  395. //System.out.println("Paikan nimi: "+paikka);
  396. }
  397. s.execute("COMMIT");
  398. long paikkaAika2 = System.nanoTime();
  399. System.out.println("1000 paikan lisäämiseen kului "+(paikkaAika2-paikkaAika1)/1e9+" sekuntia");
  400.  
  401. //LISÄÄ TUHAT ASIAKASTA A1
  402. long asiakasAika1 = System.nanoTime();
  403.  
  404. s.execute("BEGIN TRANSACTION");
  405. String asiakas;
  406. PreparedStatement q = db.prepareStatement("INSERT INTO Asiakkaat(asNimi) VALUES (?)");
  407. for (int j=1; j<1001; j++) {
  408. asiakas="A"+j;
  409. q.setString(1,asiakas);
  410. q.executeUpdate();
  411. //System.out.println("Asiakkaan nimi: "+asiakas);
  412.  
  413. }
  414. s.execute("COMMIT");
  415. long asiakasAika2 = System.nanoTime();
  416. System.out.println("1000 asiakkaan lisäämiseen kului "+(asiakasAika2-asiakasAika1)/1e9+" sekuntia");
  417.  
  418. //LISÄÄ TUHAT PAKETTIA, JOKAISELLE ASIAKAS
  419. long pakettiAika1 = System.nanoTime();
  420.  
  421. s.execute("BEGIN TRANSACTION");
  422. String paketti;
  423. for (int k=1; k<1001; k++) {
  424. paketti = "S"+k;
  425. PreparedStatement r = db.prepareStatement("INSERT INTO Paketit(koodi,asiakas_id) VALUES (?,?)");
  426. r.setString(1,paketti);
  427. r.setInt(2,k);
  428. r.executeUpdate();
  429. //System.out.println("Paketin numero: "+paketti);
  430.  
  431. }
  432. s.execute("COMMIT");
  433. long pakettiAika2 = System.nanoTime();
  434. System.out.println("1000 paketin lisäämiseen kului "+(pakettiAika2-pakettiAika1)/1e9+" sekuntia");
  435.  
  436. //LISÄÄ MILJOONA TAPAHTUMA, JOKAISELLE PAKETTI
  437. long tapahtumaAika1 = System.nanoTime();
  438.  
  439. s.execute("BEGIN TRANSACTION");
  440. Random random = new Random();
  441. for (int l=1; l<1000001; l++) {
  442. PreparedStatement tapahtuma = db.prepareStatement("INSERT INTO Tapahtumat(paketti_id) VALUES (?)");
  443. int satunnainen = random.nextInt(1000);
  444. String satunnainenPaketti = "S"+satunnainen;
  445. tapahtuma.setInt(1, satunnainen);
  446.  
  447. tapahtuma.executeUpdate();
  448. //System.out.println("Tapahtuman paketti: "+satunnainenPaketti);
  449.  
  450. }
  451. s.execute("COMMIT");
  452. long tapahtumaAika2 = System.nanoTime();
  453. System.out.println("1 000 000 tapahtuman lisäämisen kului "+(tapahtumaAika2-tapahtumaAika1)/1e9+" sekuntia");
  454.  
  455. //KYSELE TUHAT ASIAKKAIDEN PAKETTIMÄÄRISTÄ
  456. long pakettiKyselyAika1 = System.nanoTime();
  457. s.execute("BEGIN TRANSACTION");
  458.  
  459. for (int m=1; m<1000; m++) {
  460. String hakuAsiakas = "A"+m;
  461. PreparedStatement haePaketit = db.prepareStatement("SELECT Asiakkaat.asNimi, COUNT(Paketit.id) AS maara FROM Paketit LEFT JOIN Tapahtumat ON Paketit.id = Tapahtumat.paketti_id LEFT JOIN Asiakkaat ON Paketit.asiakas_id = Asiakkaat.id WHERE Asiakkaat.asNimi = ? GROUP BY Asiakkaat.id");
  462. p.setString(1, hakuAsiakas);
  463. //ResultSet tulosAsiakkaat = haePaketit.executeQuery();
  464. //System.out.println("Haun asiakkaan nimi: "+hakuAsiakas);
  465.  
  466. }
  467. s.execute("COMMIT");
  468. long pakettiKyselyAika2 = System.nanoTime();
  469. System.out.println("1000 asiakkaan pakettien kyselyyn kului "+(pakettiKyselyAika2-pakettiKyselyAika1)/1e9+" sekuntia");
  470.  
  471. //KYSELE TUHAT KERTAA JONKUN PAKETIN TAPAHTUMIA
  472. long tapahtumaKyselyAika1 = System.nanoTime();
  473. s.execute("BEGIN TRANSACTION");
  474.  
  475. for (int m=1; m<1000; m++) {
  476. String hakuPaketti = "P"+m;
  477. PreparedStatement haeTapahtumat = db.prepareStatement("SELECT Paketit.koodi, COUNT(Tapahtumat.id) AS maara FROM Paketit LEFT JOIN Tapahtumat ON Paketit.id = Tapahtumat.paketti_id WHERE Paketit.koodi = ? GROUP BY Paketit.id");
  478. p.setString(1, hakuPaketti);
  479. //ResultSet tulosPaketit = haeTapahtumat.executeQuery();
  480. //System.out.println("Haun paketti: "+hakuPaketti);
  481.  
  482. }
  483. s.execute("COMMIT");
  484. long tapahtumaKyselyAika2 = System.nanoTime();
  485. System.out.println("1000 paketin tapahtumien kyselyyn kului "+(tapahtumaKyselyAika2-tapahtumaKyselyAika1)/1e9+" sekuntia");
  486.  
  487. System.out.println("");
  488.  
  489. long aika2 = System.nanoTime();
  490. System.out.println("Aikaa kului "+(aika2-aika1)/1e9+" sekuntia");
  491.  
  492. }
  493.  
  494. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement