]> git.somenet.org - pub/jan/adbs.git/blob - ex1/main_5.tex
add queries and timings
[pub/jan/adbs.git] / ex1 / main_5.tex
1 %ex1.5
2
3 \begin{enumerate}[label=(\alph*)]
4 % (a)
5         \item
6 Optimized query:
7 \begin{verbatim}
8 SELECT distinct(displayname) FROM posts p JOIN users u ON u.id = p.owneruserid WHERE p.viewcount > u.views;
9 \end{verbatim}
10
11 Original version:
12 \begin{verbatim}
13  Planning time: 0.978 ms
14  Execution time: 86179.847 ms
15 \end{verbatim}
16
17 Optimized version:
18 \begin{verbatim}
19  Planning time: 0.960 ms
20  Execution time: 37.354 ms
21 \end{verbatim}
22
23 % (b)
24         \item
25 Optimized query:
26 \begin{verbatim}
27 SELECT score FROM comments WHERE text ILIKE 'yes\%'; <- did not work (100ms instead of 33ms)
28 \end{verbatim}
29
30 Original version:
31 \begin{verbatim}
32  Planning time: 0.540 ms
33  Execution time: 60.946 ms
34 \end{verbatim}
35
36 Optimized version:
37 \begin{verbatim}
38 TODO, current query is slower..
39 \end{verbatim}
40
41 % (b)
42         \item
43 Optimized query:
44 \begin{verbatim}
45 SELECT DISTINCT postid FROM votes WHERE postid NOT IN (SELECT postid FROM votes WHERE votetypeid != 2);
46 \end{verbatim}
47
48 Improvements:\\
49 Instead of doing about twelve million Seq Scans this is now reduces it to two Seq Scans by inverting the condition.
50
51 Original version:
52 \begin{verbatim}
53 Did not terminate. On a different machine with SSD and no time limit it took 16 minutes.
54 \end{verbatim}
55
56 Optimized version:
57 \begin{verbatim}
58  Planning time: 1.093 ms
59  Execution time: 81.776 ms
60 \end{verbatim}
61
62 % (d)
63         \item
64 Optimized query:
65 \begin{verbatim}
66 SELECT p.*, c.*, u.* FROM posts p JOIN comments c ON p.id = c.postid JOIN users u ON p.owneruserid = u.id JOIN badges b on u.id = b.userid WHERE u.upvotes+3 >= (SELECT AVG(upvotes) FROM users WHERE u.creationdate > c.creationdate) AND EXISTS (SELECT 1 FROM postlinks l WHERE l.relatedpostid > p.id) AND b.name IN ('Autobiographer','Supporter');
67 \end{verbatim}
68
69 Original version:
70 \begin{verbatim}
71  Planning time: 4.084 ms
72  Execution time: 4006.044 ms
73 \end{verbatim}
74
75 Optimized version:
76 \begin{verbatim}
77  Planning time: 2.954 ms
78  Execution time: 3081.461 ms
79 \end{verbatim}
80 \end{enumerate}