aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--content/posts/2022-01-23-pg-trigger-tests.md44
-rw-r--r--static/files/posts/pg-trigger-tests/results.svg1477
2 files changed, 1521 insertions, 0 deletions
diff --git a/content/posts/2022-01-23-pg-trigger-tests.md b/content/posts/2022-01-23-pg-trigger-tests.md
new file mode 100644
index 0000000..5c58b6f
--- /dev/null
+++ b/content/posts/2022-01-23-pg-trigger-tests.md
@@ -0,0 +1,44 @@
+---
+slug: pg-trigger-tests
+title: "Postgres Trigger Tests"
+date: "2022-01-23T10:01:49-04:00"
+---
+We already know statement-level `INSERT` [triggers][tr] are faster than
+row-level [triggers][tr] in [Postgres][].
+
+Out of curiosity I decided to time row-level and statement-level
+`INSERT` triggers with a variety of row counts.
+
+Here are the results:
+
+{{< figure
+ src="/files/posts/pg-trigger-tests/results.svg"
+ class=image
+ caption="Row Count vs Query Time"
+>}}
+
+The takeaway here is that if speed is a concern, then you should prefer
+statement-level [triggers][tr] to row-level [triggers][tr].
+
+The scripts used to create the test database, run the tests, and
+generate the results are available in the [companion GitHub
+repository][repo].
+
+[docker]: https://docker.com/
+ "Docker container orchestrator."
+[ruby]: https://ruby-lang.org/
+ "Ruby programming language."
+[python]: https://python.org/
+ "Python programming language."
+[matplotlib]: https://matplotlib.org/
+ "Matplotlib plotting library."
+[tr]: https://www.postgresql.org/docs/current/sql-createtrigger.html
+ "Postgres CREATE TRIGGER statement."
+[csv]: https://en.wikipedia.org/wiki/Comma-separated_values
+ "Comma-separated values"
+[svg]: https://en.wikipedia.org/wiki/Scalable_Vector_Graphics
+ "Scalable Vector Graphics"
+[postgres]: https://www.postgresql.org/
+ "PostgreSQL relational database."
+[repo]: https://github.com/pablotron/pg-trigger-tests
+ "Companion GitHub repository."
diff --git a/static/files/posts/pg-trigger-tests/results.svg b/static/files/posts/pg-trigger-tests/results.svg
new file mode 100644
index 0000000..46853c3
--- /dev/null
+++ b/static/files/posts/pg-trigger-tests/results.svg
@@ -0,0 +1,1477 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Created with matplotlib (https://matplotlib.org/) -->
+<svg height="345.6pt" version="1.1" viewBox="0 0 460.8 345.6" width="460.8pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata>
+ <rdf:RDF xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <cc:Work>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:date>2022-01-23T09:06:16.730923</dc:date>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Matplotlib v3.3.4, https://matplotlib.org/</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs>
+ <style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;}</style>
+ </defs>
+ <g id="figure_1">
+ <g id="patch_1">
+ <path d="M 0 345.6
+L 460.8 345.6
+L 460.8 0
+L 0 0
+z
+" style="fill:#ffffff;"/>
+ </g>
+ <g id="axes_1">
+ <g id="patch_2">
+ <path d="M 57.6 307.584
+L 414.72 307.584
+L 414.72 41.472
+L 57.6 41.472
+z
+" style="fill:#ffffff;"/>
+ </g>
+ <g id="matplotlib.axis_1">
+ <g id="xtick_1">
+ <g id="line2d_1">
+ <defs>
+ <path d="M 0 0
+L 0 3.5
+" id="m6a5e76a924" style="stroke:#000000;stroke-width:0.8;"/>
+ </defs>
+ <g>
+ <use style="stroke:#000000;stroke-width:0.8;" x="73.832727" xlink:href="#m6a5e76a924" y="307.584"/>
+ </g>
+ </g>
+ <g id="text_1">
+ <!-- $\mathdefault{10^{3}}$ -->
+ <g transform="translate(65.032727 322.182437)scale(0.1 -0.1)">
+ <defs>
+ <path d="M 12.40625 8.296875
+L 28.515625 8.296875
+L 28.515625 63.921875
+L 10.984375 60.40625
+L 10.984375 69.390625
+L 28.421875 72.90625
+L 38.28125 72.90625
+L 38.28125 8.296875
+L 54.390625 8.296875
+L 54.390625 0
+L 12.40625 0
+z
+" id="DejaVuSans-49"/>
+ <path d="M 31.78125 66.40625
+Q 24.171875 66.40625 20.328125 58.90625
+Q 16.5 51.421875 16.5 36.375
+Q 16.5 21.390625 20.328125 13.890625
+Q 24.171875 6.390625 31.78125 6.390625
+Q 39.453125 6.390625 43.28125 13.890625
+Q 47.125 21.390625 47.125 36.375
+Q 47.125 51.421875 43.28125 58.90625
+Q 39.453125 66.40625 31.78125 66.40625
+z
+M 31.78125 74.21875
+Q 44.046875 74.21875 50.515625 64.515625
+Q 56.984375 54.828125 56.984375 36.375
+Q 56.984375 17.96875 50.515625 8.265625
+Q 44.046875 -1.421875 31.78125 -1.421875
+Q 19.53125 -1.421875 13.0625 8.265625
+Q 6.59375 17.96875 6.59375 36.375
+Q 6.59375 54.828125 13.0625 64.515625
+Q 19.53125 74.21875 31.78125 74.21875
+z
+" id="DejaVuSans-48"/>
+ <path d="M 40.578125 39.3125
+Q 47.65625 37.796875 51.625 33
+Q 55.609375 28.21875 55.609375 21.1875
+Q 55.609375 10.40625 48.1875 4.484375
+Q 40.765625 -1.421875 27.09375 -1.421875
+Q 22.515625 -1.421875 17.65625 -0.515625
+Q 12.796875 0.390625 7.625 2.203125
+L 7.625 11.71875
+Q 11.71875 9.328125 16.59375 8.109375
+Q 21.484375 6.890625 26.8125 6.890625
+Q 36.078125 6.890625 40.9375 10.546875
+Q 45.796875 14.203125 45.796875 21.1875
+Q 45.796875 27.640625 41.28125 31.265625
+Q 36.765625 34.90625 28.71875 34.90625
+L 20.21875 34.90625
+L 20.21875 43.015625
+L 29.109375 43.015625
+Q 36.375 43.015625 40.234375 45.921875
+Q 44.09375 48.828125 44.09375 54.296875
+Q 44.09375 59.90625 40.109375 62.90625
+Q 36.140625 65.921875 28.71875 65.921875
+Q 24.65625 65.921875 20.015625 65.03125
+Q 15.375 64.15625 9.8125 62.3125
+L 9.8125 71.09375
+Q 15.4375 72.65625 20.34375 73.4375
+Q 25.25 74.21875 29.59375 74.21875
+Q 40.828125 74.21875 47.359375 69.109375
+Q 53.90625 64.015625 53.90625 55.328125
+Q 53.90625 49.265625 50.4375 45.09375
+Q 46.96875 40.921875 40.578125 39.3125
+z
+" id="DejaVuSans-51"/>
+ </defs>
+ <use transform="translate(0 0.765625)" xlink:href="#DejaVuSans-49"/>
+ <use transform="translate(63.623047 0.765625)" xlink:href="#DejaVuSans-48"/>
+ <use transform="translate(128.203125 39.046875)scale(0.7)" xlink:href="#DejaVuSans-51"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_2">
+ <g id="line2d_2">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.8;" x="154.996364" xlink:href="#m6a5e76a924" y="307.584"/>
+ </g>
+ </g>
+ <g id="text_2">
+ <!-- $\mathdefault{10^{4}}$ -->
+ <g transform="translate(146.196364 322.182437)scale(0.1 -0.1)">
+ <defs>
+ <path d="M 37.796875 64.3125
+L 12.890625 25.390625
+L 37.796875 25.390625
+z
+M 35.203125 72.90625
+L 47.609375 72.90625
+L 47.609375 25.390625
+L 58.015625 25.390625
+L 58.015625 17.1875
+L 47.609375 17.1875
+L 47.609375 0
+L 37.796875 0
+L 37.796875 17.1875
+L 4.890625 17.1875
+L 4.890625 26.703125
+z
+" id="DejaVuSans-52"/>
+ </defs>
+ <use transform="translate(0 0.684375)" xlink:href="#DejaVuSans-49"/>
+ <use transform="translate(63.623047 0.684375)" xlink:href="#DejaVuSans-48"/>
+ <use transform="translate(128.203125 38.965625)scale(0.7)" xlink:href="#DejaVuSans-52"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_3">
+ <g id="line2d_3">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.8;" x="236.16" xlink:href="#m6a5e76a924" y="307.584"/>
+ </g>
+ </g>
+ <g id="text_3">
+ <!-- $\mathdefault{10^{5}}$ -->
+ <g transform="translate(227.36 322.182437)scale(0.1 -0.1)">
+ <defs>
+ <path d="M 10.796875 72.90625
+L 49.515625 72.90625
+L 49.515625 64.59375
+L 19.828125 64.59375
+L 19.828125 46.734375
+Q 21.96875 47.46875 24.109375 47.828125
+Q 26.265625 48.1875 28.421875 48.1875
+Q 40.625 48.1875 47.75 41.5
+Q 54.890625 34.8125 54.890625 23.390625
+Q 54.890625 11.625 47.5625 5.09375
+Q 40.234375 -1.421875 26.90625 -1.421875
+Q 22.3125 -1.421875 17.546875 -0.640625
+Q 12.796875 0.140625 7.71875 1.703125
+L 7.71875 11.625
+Q 12.109375 9.234375 16.796875 8.0625
+Q 21.484375 6.890625 26.703125 6.890625
+Q 35.15625 6.890625 40.078125 11.328125
+Q 45.015625 15.765625 45.015625 23.390625
+Q 45.015625 31 40.078125 35.4375
+Q 35.15625 39.890625 26.703125 39.890625
+Q 22.75 39.890625 18.8125 39.015625
+Q 14.890625 38.140625 10.796875 36.28125
+z
+" id="DejaVuSans-53"/>
+ </defs>
+ <use transform="translate(0 0.684375)" xlink:href="#DejaVuSans-49"/>
+ <use transform="translate(63.623047 0.684375)" xlink:href="#DejaVuSans-48"/>
+ <use transform="translate(128.203125 38.965625)scale(0.7)" xlink:href="#DejaVuSans-53"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_4">
+ <g id="line2d_4">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.8;" x="317.323636" xlink:href="#m6a5e76a924" y="307.584"/>
+ </g>
+ </g>
+ <g id="text_4">
+ <!-- $\mathdefault{10^{6}}$ -->
+ <g transform="translate(308.523636 322.182437)scale(0.1 -0.1)">
+ <defs>
+ <path d="M 33.015625 40.375
+Q 26.375 40.375 22.484375 35.828125
+Q 18.609375 31.296875 18.609375 23.390625
+Q 18.609375 15.53125 22.484375 10.953125
+Q 26.375 6.390625 33.015625 6.390625
+Q 39.65625 6.390625 43.53125 10.953125
+Q 47.40625 15.53125 47.40625 23.390625
+Q 47.40625 31.296875 43.53125 35.828125
+Q 39.65625 40.375 33.015625 40.375
+z
+M 52.59375 71.296875
+L 52.59375 62.3125
+Q 48.875 64.0625 45.09375 64.984375
+Q 41.3125 65.921875 37.59375 65.921875
+Q 27.828125 65.921875 22.671875 59.328125
+Q 17.53125 52.734375 16.796875 39.40625
+Q 19.671875 43.65625 24.015625 45.921875
+Q 28.375 48.1875 33.59375 48.1875
+Q 44.578125 48.1875 50.953125 41.515625
+Q 57.328125 34.859375 57.328125 23.390625
+Q 57.328125 12.15625 50.6875 5.359375
+Q 44.046875 -1.421875 33.015625 -1.421875
+Q 20.359375 -1.421875 13.671875 8.265625
+Q 6.984375 17.96875 6.984375 36.375
+Q 6.984375 53.65625 15.1875 63.9375
+Q 23.390625 74.21875 37.203125 74.21875
+Q 40.921875 74.21875 44.703125 73.484375
+Q 48.484375 72.75 52.59375 71.296875
+z
+" id="DejaVuSans-54"/>
+ </defs>
+ <use transform="translate(0 0.765625)" xlink:href="#DejaVuSans-49"/>
+ <use transform="translate(63.623047 0.765625)" xlink:href="#DejaVuSans-48"/>
+ <use transform="translate(128.203125 39.046875)scale(0.7)" xlink:href="#DejaVuSans-54"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_5">
+ <g id="line2d_5">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.8;" x="398.487273" xlink:href="#m6a5e76a924" y="307.584"/>
+ </g>
+ </g>
+ <g id="text_5">
+ <!-- $\mathdefault{10^{7}}$ -->
+ <g transform="translate(389.687273 322.182437)scale(0.1 -0.1)">
+ <defs>
+ <path d="M 8.203125 72.90625
+L 55.078125 72.90625
+L 55.078125 68.703125
+L 28.609375 0
+L 18.3125 0
+L 43.21875 64.59375
+L 8.203125 64.59375
+z
+" id="DejaVuSans-55"/>
+ </defs>
+ <use transform="translate(0 0.684375)" xlink:href="#DejaVuSans-49"/>
+ <use transform="translate(63.623047 0.684375)" xlink:href="#DejaVuSans-48"/>
+ <use transform="translate(128.203125 38.965625)scale(0.7)" xlink:href="#DejaVuSans-55"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_6">
+ <g id="line2d_6">
+ <defs>
+ <path d="M 0 0
+L 0 2
+" id="m8fe2f9c99e" style="stroke:#000000;stroke-width:0.6;"/>
+ </defs>
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="61.260321" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_7">
+ <g id="line2d_7">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="65.967158" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_8">
+ <g id="line2d_8">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="70.118883" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_9">
+ <g id="line2d_9">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="98.265416" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_10">
+ <g id="line2d_10">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="112.557623" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_11">
+ <g id="line2d_11">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="122.698105" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_12">
+ <g id="line2d_12">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="130.563675" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_13">
+ <g id="line2d_13">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="136.990312" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_14">
+ <g id="line2d_14">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="142.423957" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_15">
+ <g id="line2d_15">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="147.130795" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_16">
+ <g id="line2d_16">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="151.282519" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_17">
+ <g id="line2d_17">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="179.429053" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_18">
+ <g id="line2d_18">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="193.72126" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_19">
+ <g id="line2d_19">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="203.861742" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_20">
+ <g id="line2d_20">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="211.727311" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_21">
+ <g id="line2d_21">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="218.153949" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_22">
+ <g id="line2d_22">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="223.587594" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_23">
+ <g id="line2d_23">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="228.294431" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_24">
+ <g id="line2d_24">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="232.446156" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_25">
+ <g id="line2d_25">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="260.592689" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_26">
+ <g id="line2d_26">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="274.884896" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_27">
+ <g id="line2d_27">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="285.025378" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_28">
+ <g id="line2d_28">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="292.890947" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_29">
+ <g id="line2d_29">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="299.317585" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_30">
+ <g id="line2d_30">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="304.75123" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_31">
+ <g id="line2d_31">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="309.458067" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_32">
+ <g id="line2d_32">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="313.609792" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_33">
+ <g id="line2d_33">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="341.756325" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_34">
+ <g id="line2d_34">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="356.048532" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_35">
+ <g id="line2d_35">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="366.189015" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_36">
+ <g id="line2d_36">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="374.054584" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_37">
+ <g id="line2d_37">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="380.481221" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_38">
+ <g id="line2d_38">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="385.914866" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_39">
+ <g id="line2d_39">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="390.621704" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="xtick_40">
+ <g id="line2d_40">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="394.773428" xlink:href="#m8fe2f9c99e" y="307.584"/>
+ </g>
+ </g>
+ </g>
+ <g id="text_6">
+ <!-- Row Count -->
+ <g transform="translate(209.324844 335.860562)scale(0.1 -0.1)">
+ <defs>
+ <path d="M 44.390625 34.1875
+Q 47.5625 33.109375 50.5625 29.59375
+Q 53.5625 26.078125 56.59375 19.921875
+L 66.609375 0
+L 56 0
+L 46.6875 18.703125
+Q 43.0625 26.03125 39.671875 28.421875
+Q 36.28125 30.8125 30.421875 30.8125
+L 19.671875 30.8125
+L 19.671875 0
+L 9.8125 0
+L 9.8125 72.90625
+L 32.078125 72.90625
+Q 44.578125 72.90625 50.734375 67.671875
+Q 56.890625 62.453125 56.890625 51.90625
+Q 56.890625 45.015625 53.6875 40.46875
+Q 50.484375 35.9375 44.390625 34.1875
+z
+M 19.671875 64.796875
+L 19.671875 38.921875
+L 32.078125 38.921875
+Q 39.203125 38.921875 42.84375 42.21875
+Q 46.484375 45.515625 46.484375 51.90625
+Q 46.484375 58.296875 42.84375 61.546875
+Q 39.203125 64.796875 32.078125 64.796875
+z
+" id="DejaVuSans-82"/>
+ <path d="M 30.609375 48.390625
+Q 23.390625 48.390625 19.1875 42.75
+Q 14.984375 37.109375 14.984375 27.296875
+Q 14.984375 17.484375 19.15625 11.84375
+Q 23.34375 6.203125 30.609375 6.203125
+Q 37.796875 6.203125 41.984375 11.859375
+Q 46.1875 17.53125 46.1875 27.296875
+Q 46.1875 37.015625 41.984375 42.703125
+Q 37.796875 48.390625 30.609375 48.390625
+z
+M 30.609375 56
+Q 42.328125 56 49.015625 48.375
+Q 55.71875 40.765625 55.71875 27.296875
+Q 55.71875 13.875 49.015625 6.21875
+Q 42.328125 -1.421875 30.609375 -1.421875
+Q 18.84375 -1.421875 12.171875 6.21875
+Q 5.515625 13.875 5.515625 27.296875
+Q 5.515625 40.765625 12.171875 48.375
+Q 18.84375 56 30.609375 56
+z
+" id="DejaVuSans-111"/>
+ <path d="M 4.203125 54.6875
+L 13.1875 54.6875
+L 24.421875 12.015625
+L 35.59375 54.6875
+L 46.1875 54.6875
+L 57.421875 12.015625
+L 68.609375 54.6875
+L 77.59375 54.6875
+L 63.28125 0
+L 52.6875 0
+L 40.921875 44.828125
+L 29.109375 0
+L 18.5 0
+z
+" id="DejaVuSans-119"/>
+ <path id="DejaVuSans-32"/>
+ <path d="M 64.40625 67.28125
+L 64.40625 56.890625
+Q 59.421875 61.53125 53.78125 63.8125
+Q 48.140625 66.109375 41.796875 66.109375
+Q 29.296875 66.109375 22.65625 58.46875
+Q 16.015625 50.828125 16.015625 36.375
+Q 16.015625 21.96875 22.65625 14.328125
+Q 29.296875 6.6875 41.796875 6.6875
+Q 48.140625 6.6875 53.78125 8.984375
+Q 59.421875 11.28125 64.40625 15.921875
+L 64.40625 5.609375
+Q 59.234375 2.09375 53.4375 0.328125
+Q 47.65625 -1.421875 41.21875 -1.421875
+Q 24.65625 -1.421875 15.125 8.703125
+Q 5.609375 18.84375 5.609375 36.375
+Q 5.609375 53.953125 15.125 64.078125
+Q 24.65625 74.21875 41.21875 74.21875
+Q 47.75 74.21875 53.53125 72.484375
+Q 59.328125 70.75 64.40625 67.28125
+z
+" id="DejaVuSans-67"/>
+ <path d="M 8.5 21.578125
+L 8.5 54.6875
+L 17.484375 54.6875
+L 17.484375 21.921875
+Q 17.484375 14.15625 20.5 10.265625
+Q 23.53125 6.390625 29.59375 6.390625
+Q 36.859375 6.390625 41.078125 11.03125
+Q 45.3125 15.671875 45.3125 23.6875
+L 45.3125 54.6875
+L 54.296875 54.6875
+L 54.296875 0
+L 45.3125 0
+L 45.3125 8.40625
+Q 42.046875 3.421875 37.71875 1
+Q 33.40625 -1.421875 27.6875 -1.421875
+Q 18.265625 -1.421875 13.375 4.4375
+Q 8.5 10.296875 8.5 21.578125
+z
+M 31.109375 56
+z
+" id="DejaVuSans-117"/>
+ <path d="M 54.890625 33.015625
+L 54.890625 0
+L 45.90625 0
+L 45.90625 32.71875
+Q 45.90625 40.484375 42.875 44.328125
+Q 39.84375 48.1875 33.796875 48.1875
+Q 26.515625 48.1875 22.3125 43.546875
+Q 18.109375 38.921875 18.109375 30.90625
+L 18.109375 0
+L 9.078125 0
+L 9.078125 54.6875
+L 18.109375 54.6875
+L 18.109375 46.1875
+Q 21.34375 51.125 25.703125 53.5625
+Q 30.078125 56 35.796875 56
+Q 45.21875 56 50.046875 50.171875
+Q 54.890625 44.34375 54.890625 33.015625
+z
+" id="DejaVuSans-110"/>
+ <path d="M 18.3125 70.21875
+L 18.3125 54.6875
+L 36.8125 54.6875
+L 36.8125 47.703125
+L 18.3125 47.703125
+L 18.3125 18.015625
+Q 18.3125 11.328125 20.140625 9.421875
+Q 21.96875 7.515625 27.59375 7.515625
+L 36.8125 7.515625
+L 36.8125 0
+L 27.59375 0
+Q 17.1875 0 13.234375 3.875
+Q 9.28125 7.765625 9.28125 18.015625
+L 9.28125 47.703125
+L 2.6875 47.703125
+L 2.6875 54.6875
+L 9.28125 54.6875
+L 9.28125 70.21875
+z
+" id="DejaVuSans-116"/>
+ </defs>
+ <use xlink:href="#DejaVuSans-82"/>
+ <use x="64.982422" xlink:href="#DejaVuSans-111"/>
+ <use x="126.164062" xlink:href="#DejaVuSans-119"/>
+ <use x="207.951172" xlink:href="#DejaVuSans-32"/>
+ <use x="239.738281" xlink:href="#DejaVuSans-67"/>
+ <use x="309.5625" xlink:href="#DejaVuSans-111"/>
+ <use x="370.744141" xlink:href="#DejaVuSans-117"/>
+ <use x="434.123047" xlink:href="#DejaVuSans-110"/>
+ <use x="497.501953" xlink:href="#DejaVuSans-116"/>
+ </g>
+ </g>
+ </g>
+ <g id="matplotlib.axis_2">
+ <g id="ytick_1">
+ <g id="line2d_41">
+ <defs>
+ <path d="M 0 0
+L -3.5 0
+" id="m2908ee1aef" style="stroke:#000000;stroke-width:0.8;"/>
+ </defs>
+ <g>
+ <use style="stroke:#000000;stroke-width:0.8;" x="57.6" xlink:href="#m2908ee1aef" y="252.468819"/>
+ </g>
+ </g>
+ <g id="text_7">
+ <!-- $\mathdefault{10^{2}}$ -->
+ <g transform="translate(33 256.268038)scale(0.1 -0.1)">
+ <defs>
+ <path d="M 19.1875 8.296875
+L 53.609375 8.296875
+L 53.609375 0
+L 7.328125 0
+L 7.328125 8.296875
+Q 12.9375 14.109375 22.625 23.890625
+Q 32.328125 33.6875 34.8125 36.53125
+Q 39.546875 41.84375 41.421875 45.53125
+Q 43.3125 49.21875 43.3125 52.78125
+Q 43.3125 58.59375 39.234375 62.25
+Q 35.15625 65.921875 28.609375 65.921875
+Q 23.96875 65.921875 18.8125 64.3125
+Q 13.671875 62.703125 7.8125 59.421875
+L 7.8125 69.390625
+Q 13.765625 71.78125 18.9375 73
+Q 24.125 74.21875 28.421875 74.21875
+Q 39.75 74.21875 46.484375 68.546875
+Q 53.21875 62.890625 53.21875 53.421875
+Q 53.21875 48.921875 51.53125 44.890625
+Q 49.859375 40.875 45.40625 35.40625
+Q 44.1875 33.984375 37.640625 27.21875
+Q 31.109375 20.453125 19.1875 8.296875
+z
+" id="DejaVuSans-50"/>
+ </defs>
+ <use transform="translate(0 0.765625)" xlink:href="#DejaVuSans-49"/>
+ <use transform="translate(63.623047 0.765625)" xlink:href="#DejaVuSans-48"/>
+ <use transform="translate(128.203125 39.046875)scale(0.7)" xlink:href="#DejaVuSans-50"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_2">
+ <g id="line2d_42">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.8;" x="57.6" xlink:href="#m2908ee1aef" y="179.119506"/>
+ </g>
+ </g>
+ <g id="text_8">
+ <!-- $\mathdefault{10^{3}}$ -->
+ <g transform="translate(33 182.918725)scale(0.1 -0.1)">
+ <use transform="translate(0 0.765625)" xlink:href="#DejaVuSans-49"/>
+ <use transform="translate(63.623047 0.765625)" xlink:href="#DejaVuSans-48"/>
+ <use transform="translate(128.203125 39.046875)scale(0.7)" xlink:href="#DejaVuSans-51"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_3">
+ <g id="line2d_43">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.8;" x="57.6" xlink:href="#m2908ee1aef" y="105.770193"/>
+ </g>
+ </g>
+ <g id="text_9">
+ <!-- $\mathdefault{10^{4}}$ -->
+ <g transform="translate(33 109.569412)scale(0.1 -0.1)">
+ <use transform="translate(0 0.684375)" xlink:href="#DejaVuSans-49"/>
+ <use transform="translate(63.623047 0.684375)" xlink:href="#DejaVuSans-48"/>
+ <use transform="translate(128.203125 38.965625)scale(0.7)" xlink:href="#DejaVuSans-52"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_4">
+ <g id="line2d_44">
+ <defs>
+ <path d="M 0 0
+L -2 0
+" id="m57a1a76166" style="stroke:#000000;stroke-width:0.6;"/>
+ </defs>
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="303.737789"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_5">
+ <g id="line2d_45">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="290.821616"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_6">
+ <g id="line2d_46">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="281.657446"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_7">
+ <g id="line2d_47">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="274.549163"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_8">
+ <g id="line2d_48">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="268.741273"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_9">
+ <g id="line2d_49">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="263.830772"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_10">
+ <g id="line2d_50">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="259.577102"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_11">
+ <g id="line2d_51">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="255.8251"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_12">
+ <g id="line2d_52">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="230.388476"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_13">
+ <g id="line2d_53">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="217.472303"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_14">
+ <g id="line2d_54">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="208.308133"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_15">
+ <g id="line2d_55">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="201.19985"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_16">
+ <g id="line2d_56">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="195.39196"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_17">
+ <g id="line2d_57">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="190.481459"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_18">
+ <g id="line2d_58">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="186.227789"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_19">
+ <g id="line2d_59">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="182.475787"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_20">
+ <g id="line2d_60">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="157.039163"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_21">
+ <g id="line2d_61">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="144.12299"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_22">
+ <g id="line2d_62">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="134.95882"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_23">
+ <g id="line2d_63">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="127.850537"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_24">
+ <g id="line2d_64">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="122.042647"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_25">
+ <g id="line2d_65">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="117.132146"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_26">
+ <g id="line2d_66">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="112.878476"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_27">
+ <g id="line2d_67">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="109.126474"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_28">
+ <g id="line2d_68">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="83.68985"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_29">
+ <g id="line2d_69">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="70.773677"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_30">
+ <g id="line2d_70">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="61.609507"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_31">
+ <g id="line2d_71">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="54.501224"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_32">
+ <g id="line2d_72">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="48.693334"/>
+ </g>
+ </g>
+ </g>
+ <g id="ytick_33">
+ <g id="line2d_73">
+ <g>
+ <use style="stroke:#000000;stroke-width:0.6;" x="57.6" xlink:href="#m57a1a76166" y="43.782833"/>
+ </g>
+ </g>
+ </g>
+ <g id="text_10">
+ <!-- Query Time (ms) -->
+ <g transform="translate(26.920312 216.512375)rotate(-90)scale(0.1 -0.1)">
+ <defs>
+ <path d="M 39.40625 66.21875
+Q 28.65625 66.21875 22.328125 58.203125
+Q 16.015625 50.203125 16.015625 36.375
+Q 16.015625 22.609375 22.328125 14.59375
+Q 28.65625 6.59375 39.40625 6.59375
+Q 50.140625 6.59375 56.421875 14.59375
+Q 62.703125 22.609375 62.703125 36.375
+Q 62.703125 50.203125 56.421875 58.203125
+Q 50.140625 66.21875 39.40625 66.21875
+z
+M 53.21875 1.3125
+L 66.21875 -12.890625
+L 54.296875 -12.890625
+L 43.5 -1.21875
+Q 41.890625 -1.3125 41.03125 -1.359375
+Q 40.1875 -1.421875 39.40625 -1.421875
+Q 24.03125 -1.421875 14.8125 8.859375
+Q 5.609375 19.140625 5.609375 36.375
+Q 5.609375 53.65625 14.8125 63.9375
+Q 24.03125 74.21875 39.40625 74.21875
+Q 54.734375 74.21875 63.90625 63.9375
+Q 73.09375 53.65625 73.09375 36.375
+Q 73.09375 23.6875 67.984375 14.640625
+Q 62.890625 5.609375 53.21875 1.3125
+z
+" id="DejaVuSans-81"/>
+ <path d="M 56.203125 29.59375
+L 56.203125 25.203125
+L 14.890625 25.203125
+Q 15.484375 15.921875 20.484375 11.0625
+Q 25.484375 6.203125 34.421875 6.203125
+Q 39.59375 6.203125 44.453125 7.46875
+Q 49.3125 8.734375 54.109375 11.28125
+L 54.109375 2.78125
+Q 49.265625 0.734375 44.1875 -0.34375
+Q 39.109375 -1.421875 33.890625 -1.421875
+Q 20.796875 -1.421875 13.15625 6.1875
+Q 5.515625 13.8125 5.515625 26.8125
+Q 5.515625 40.234375 12.765625 48.109375
+Q 20.015625 56 32.328125 56
+Q 43.359375 56 49.78125 48.890625
+Q 56.203125 41.796875 56.203125 29.59375
+z
+M 47.21875 32.234375
+Q 47.125 39.59375 43.09375 43.984375
+Q 39.0625 48.390625 32.421875 48.390625
+Q 24.90625 48.390625 20.390625 44.140625
+Q 15.875 39.890625 15.1875 32.171875
+z
+" id="DejaVuSans-101"/>
+ <path d="M 41.109375 46.296875
+Q 39.59375 47.171875 37.8125 47.578125
+Q 36.03125 48 33.890625 48
+Q 26.265625 48 22.1875 43.046875
+Q 18.109375 38.09375 18.109375 28.8125
+L 18.109375 0
+L 9.078125 0
+L 9.078125 54.6875
+L 18.109375 54.6875
+L 18.109375 46.1875
+Q 20.953125 51.171875 25.484375 53.578125
+Q 30.03125 56 36.53125 56
+Q 37.453125 56 38.578125 55.875
+Q 39.703125 55.765625 41.0625 55.515625
+z
+" id="DejaVuSans-114"/>
+ <path d="M 32.171875 -5.078125
+Q 28.375 -14.84375 24.75 -17.8125
+Q 21.140625 -20.796875 15.09375 -20.796875
+L 7.90625 -20.796875
+L 7.90625 -13.28125
+L 13.1875 -13.28125
+Q 16.890625 -13.28125 18.9375 -11.515625
+Q 21 -9.765625 23.484375 -3.21875
+L 25.09375 0.875
+L 2.984375 54.6875
+L 12.5 54.6875
+L 29.59375 11.921875
+L 46.6875 54.6875
+L 56.203125 54.6875
+z
+" id="DejaVuSans-121"/>
+ <path d="M -0.296875 72.90625
+L 61.375 72.90625
+L 61.375 64.59375
+L 35.5 64.59375
+L 35.5 0
+L 25.59375 0
+L 25.59375 64.59375
+L -0.296875 64.59375
+z
+" id="DejaVuSans-84"/>
+ <path d="M 9.421875 54.6875
+L 18.40625 54.6875
+L 18.40625 0
+L 9.421875 0
+z
+M 9.421875 75.984375
+L 18.40625 75.984375
+L 18.40625 64.59375
+L 9.421875 64.59375
+z
+" id="DejaVuSans-105"/>
+ <path d="M 52 44.1875
+Q 55.375 50.25 60.0625 53.125
+Q 64.75 56 71.09375 56
+Q 79.640625 56 84.28125 50.015625
+Q 88.921875 44.046875 88.921875 33.015625
+L 88.921875 0
+L 79.890625 0
+L 79.890625 32.71875
+Q 79.890625 40.578125 77.09375 44.375
+Q 74.3125 48.1875 68.609375 48.1875
+Q 61.625 48.1875 57.5625 43.546875
+Q 53.515625 38.921875 53.515625 30.90625
+L 53.515625 0
+L 44.484375 0
+L 44.484375 32.71875
+Q 44.484375 40.625 41.703125 44.40625
+Q 38.921875 48.1875 33.109375 48.1875
+Q 26.21875 48.1875 22.15625 43.53125
+Q 18.109375 38.875 18.109375 30.90625
+L 18.109375 0
+L 9.078125 0
+L 9.078125 54.6875
+L 18.109375 54.6875
+L 18.109375 46.1875
+Q 21.1875 51.21875 25.484375 53.609375
+Q 29.78125 56 35.6875 56
+Q 41.65625 56 45.828125 52.96875
+Q 50 49.953125 52 44.1875
+z
+" id="DejaVuSans-109"/>
+ <path d="M 31 75.875
+Q 24.46875 64.65625 21.28125 53.65625
+Q 18.109375 42.671875 18.109375 31.390625
+Q 18.109375 20.125 21.3125 9.0625
+Q 24.515625 -2 31 -13.1875
+L 23.1875 -13.1875
+Q 15.875 -1.703125 12.234375 9.375
+Q 8.59375 20.453125 8.59375 31.390625
+Q 8.59375 42.28125 12.203125 53.3125
+Q 15.828125 64.359375 23.1875 75.875
+z
+" id="DejaVuSans-40"/>
+ <path d="M 44.28125 53.078125
+L 44.28125 44.578125
+Q 40.484375 46.53125 36.375 47.5
+Q 32.28125 48.484375 27.875 48.484375
+Q 21.1875 48.484375 17.84375 46.4375
+Q 14.5 44.390625 14.5 40.28125
+Q 14.5 37.15625 16.890625 35.375
+Q 19.28125 33.59375 26.515625 31.984375
+L 29.59375 31.296875
+Q 39.15625 29.25 43.1875 25.515625
+Q 47.21875 21.78125 47.21875 15.09375
+Q 47.21875 7.46875 41.1875 3.015625
+Q 35.15625 -1.421875 24.609375 -1.421875
+Q 20.21875 -1.421875 15.453125 -0.5625
+Q 10.6875 0.296875 5.421875 2
+L 5.421875 11.28125
+Q 10.40625 8.6875 15.234375 7.390625
+Q 20.0625 6.109375 24.8125 6.109375
+Q 31.15625 6.109375 34.5625 8.28125
+Q 37.984375 10.453125 37.984375 14.40625
+Q 37.984375 18.0625 35.515625 20.015625
+Q 33.0625 21.96875 24.703125 23.78125
+L 21.578125 24.515625
+Q 13.234375 26.265625 9.515625 29.90625
+Q 5.8125 33.546875 5.8125 39.890625
+Q 5.8125 47.609375 11.28125 51.796875
+Q 16.75 56 26.8125 56
+Q 31.78125 56 36.171875 55.265625
+Q 40.578125 54.546875 44.28125 53.078125
+z
+" id="DejaVuSans-115"/>
+ <path d="M 8.015625 75.875
+L 15.828125 75.875
+Q 23.140625 64.359375 26.78125 53.3125
+Q 30.421875 42.28125 30.421875 31.390625
+Q 30.421875 20.453125 26.78125 9.375
+Q 23.140625 -1.703125 15.828125 -13.1875
+L 8.015625 -13.1875
+Q 14.5 -2 17.703125 9.0625
+Q 20.90625 20.125 20.90625 31.390625
+Q 20.90625 42.671875 17.703125 53.65625
+Q 14.5 64.65625 8.015625 75.875
+z
+" id="DejaVuSans-41"/>
+ </defs>
+ <use xlink:href="#DejaVuSans-81"/>
+ <use x="78.710938" xlink:href="#DejaVuSans-117"/>
+ <use x="142.089844" xlink:href="#DejaVuSans-101"/>
+ <use x="203.613281" xlink:href="#DejaVuSans-114"/>
+ <use x="244.726562" xlink:href="#DejaVuSans-121"/>
+ <use x="303.90625" xlink:href="#DejaVuSans-32"/>
+ <use x="335.693359" xlink:href="#DejaVuSans-84"/>
+ <use x="393.652344" xlink:href="#DejaVuSans-105"/>
+ <use x="421.435547" xlink:href="#DejaVuSans-109"/>
+ <use x="518.847656" xlink:href="#DejaVuSans-101"/>
+ <use x="580.371094" xlink:href="#DejaVuSans-32"/>
+ <use x="612.158203" xlink:href="#DejaVuSans-40"/>
+ <use x="651.171875" xlink:href="#DejaVuSans-109"/>
+ <use x="748.583984" xlink:href="#DejaVuSans-115"/>
+ <use x="800.683594" xlink:href="#DejaVuSans-41"/>
+ </g>
+ </g>
+ </g>
+ <g id="line2d_74">
+ <path clip-path="url(#p3133748476)" d="M 398.487273 53.568
+L 317.323636 126.093396
+L 236.16 195.224006
+L 154.996364 261.494868
+L 73.832727 285.505417
+" style="fill:none;stroke:#ff0000;stroke-linecap:square;stroke-width:1.5;"/>
+ <defs>
+ <path d="M 0 3
+C 0.795609 3 1.55874 2.683901 2.12132 2.12132
+C 2.683901 1.55874 3 0.795609 3 0
+C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132
+C 1.55874 -2.683901 0.795609 -3 0 -3
+C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132
+C -2.683901 -1.55874 -3 -0.795609 -3 0
+C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132
+C -1.55874 2.683901 -0.795609 3 0 3
+z
+" id="mcf7b607aa8" style="stroke:#ff0000;"/>
+ </defs>
+ <g clip-path="url(#p3133748476)">
+ <use style="fill:#ff0000;stroke:#ff0000;" x="398.487273" xlink:href="#mcf7b607aa8" y="53.568"/>
+ <use style="fill:#ff0000;stroke:#ff0000;" x="317.323636" xlink:href="#mcf7b607aa8" y="126.093396"/>
+ <use style="fill:#ff0000;stroke:#ff0000;" x="236.16" xlink:href="#mcf7b607aa8" y="195.224006"/>
+ <use style="fill:#ff0000;stroke:#ff0000;" x="154.996364" xlink:href="#mcf7b607aa8" y="261.494868"/>
+ <use style="fill:#ff0000;stroke:#ff0000;" x="73.832727" xlink:href="#mcf7b607aa8" y="285.505417"/>
+ </g>
+ </g>
+ <g id="line2d_75">
+ <path clip-path="url(#p3133748476)" d="M 398.487273 83.32929
+L 317.323636 157.564383
+L 236.16 220.27391
+L 154.996364 278.658628
+L 73.832727 295.488
+" style="fill:none;stroke:#0000ff;stroke-linecap:square;stroke-width:1.5;"/>
+ <defs>
+ <path d="M -3 3
+L 3 3
+L 3 -3
+L -3 -3
+z
+" id="m31534e7702" style="stroke:#0000ff;stroke-linejoin:miter;"/>
+ </defs>
+ <g clip-path="url(#p3133748476)">
+ <use style="fill:#0000ff;stroke:#0000ff;stroke-linejoin:miter;" x="398.487273" xlink:href="#m31534e7702" y="83.32929"/>
+ <use style="fill:#0000ff;stroke:#0000ff;stroke-linejoin:miter;" x="317.323636" xlink:href="#m31534e7702" y="157.564383"/>
+ <use style="fill:#0000ff;stroke:#0000ff;stroke-linejoin:miter;" x="236.16" xlink:href="#m31534e7702" y="220.27391"/>
+ <use style="fill:#0000ff;stroke:#0000ff;stroke-linejoin:miter;" x="154.996364" xlink:href="#m31534e7702" y="278.658628"/>
+ <use style="fill:#0000ff;stroke:#0000ff;stroke-linejoin:miter;" x="73.832727" xlink:href="#m31534e7702" y="295.488"/>
+ </g>
+ </g>
+ <g id="patch_3">
+ <path d="M 57.6 307.584
+L 57.6 41.472
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+ </g>
+ <g id="patch_4">
+ <path d="M 414.72 307.584
+L 414.72 41.472
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+ </g>
+ <g id="patch_5">
+ <path d="M 57.6 307.584
+L 414.72 307.584
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+ </g>
+ <g id="patch_6">
+ <path d="M 57.6 41.472
+L 414.72 41.472
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+ </g>
+ <g id="text_11">
+ <!-- Row Count vs Query Time -->
+ <g transform="translate(158.644688 35.472)scale(0.12 -0.12)">
+ <defs>
+ <path d="M 2.984375 54.6875
+L 12.5 54.6875
+L 29.59375 8.796875
+L 46.6875 54.6875
+L 56.203125 54.6875
+L 35.6875 0
+L 23.484375 0
+z
+" id="DejaVuSans-118"/>
+ </defs>
+ <use xlink:href="#DejaVuSans-82"/>
+ <use x="64.982422" xlink:href="#DejaVuSans-111"/>
+ <use x="126.164062" xlink:href="#DejaVuSans-119"/>
+ <use x="207.951172" xlink:href="#DejaVuSans-32"/>
+ <use x="239.738281" xlink:href="#DejaVuSans-67"/>
+ <use x="309.5625" xlink:href="#DejaVuSans-111"/>
+ <use x="370.744141" xlink:href="#DejaVuSans-117"/>
+ <use x="434.123047" xlink:href="#DejaVuSans-110"/>
+ <use x="497.501953" xlink:href="#DejaVuSans-116"/>
+ <use x="536.710938" xlink:href="#DejaVuSans-32"/>
+ <use x="568.498047" xlink:href="#DejaVuSans-118"/>
+ <use x="627.677734" xlink:href="#DejaVuSans-115"/>
+ <use x="679.777344" xlink:href="#DejaVuSans-32"/>
+ <use x="711.564453" xlink:href="#DejaVuSans-81"/>
+ <use x="790.275391" xlink:href="#DejaVuSans-117"/>
+ <use x="853.654297" xlink:href="#DejaVuSans-101"/>
+ <use x="915.177734" xlink:href="#DejaVuSans-114"/>
+ <use x="956.291016" xlink:href="#DejaVuSans-121"/>
+ <use x="1015.470703" xlink:href="#DejaVuSans-32"/>
+ <use x="1047.257812" xlink:href="#DejaVuSans-84"/>
+ <use x="1105.216797" xlink:href="#DejaVuSans-105"/>
+ <use x="1133" xlink:href="#DejaVuSans-109"/>
+ <use x="1230.412109" xlink:href="#DejaVuSans-101"/>
+ </g>
+ </g>
+ <g id="legend_1">
+ <g id="patch_7">
+ <path d="M 259.899688 302.584
+L 407.72 302.584
+Q 409.72 302.584 409.72 300.584
+L 409.72 272.22775
+Q 409.72 270.22775 407.72 270.22775
+L 259.899688 270.22775
+Q 257.899688 270.22775 257.899688 272.22775
+L 257.899688 300.584
+Q 257.899688 302.584 259.899688 302.584
+z
+" style="fill:#ffffff;opacity:0.8;stroke:#cccccc;stroke-linejoin:miter;"/>
+ </g>
+ <g id="line2d_76">
+ <path d="M 261.899688 278.326187
+L 281.899688 278.326187
+" style="fill:none;stroke:#ff0000;stroke-linecap:square;stroke-width:1.5;"/>
+ </g>
+ <g id="line2d_77">
+ <g>
+ <use style="fill:#ff0000;stroke:#ff0000;" x="271.899688" xlink:href="#mcf7b607aa8" y="278.326187"/>
+ </g>
+ </g>
+ <g id="text_12">
+ <!-- row-level trigger -->
+ <g transform="translate(289.899688 281.826187)scale(0.1 -0.1)">
+ <defs>
+ <path d="M 4.890625 31.390625
+L 31.203125 31.390625
+L 31.203125 23.390625
+L 4.890625 23.390625
+z
+" id="DejaVuSans-45"/>
+ <path d="M 9.421875 75.984375
+L 18.40625 75.984375
+L 18.40625 0
+L 9.421875 0
+z
+" id="DejaVuSans-108"/>
+ <path d="M 45.40625 27.984375
+Q 45.40625 37.75 41.375 43.109375
+Q 37.359375 48.484375 30.078125 48.484375
+Q 22.859375 48.484375 18.828125 43.109375
+Q 14.796875 37.75 14.796875 27.984375
+Q 14.796875 18.265625 18.828125 12.890625
+Q 22.859375 7.515625 30.078125 7.515625
+Q 37.359375 7.515625 41.375 12.890625
+Q 45.40625 18.265625 45.40625 27.984375
+z
+M 54.390625 6.78125
+Q 54.390625 -7.171875 48.1875 -13.984375
+Q 42 -20.796875 29.203125 -20.796875
+Q 24.46875 -20.796875 20.265625 -20.09375
+Q 16.0625 -19.390625 12.109375 -17.921875
+L 12.109375 -9.1875
+Q 16.0625 -11.328125 19.921875 -12.34375
+Q 23.78125 -13.375 27.78125 -13.375
+Q 36.625 -13.375 41.015625 -8.765625
+Q 45.40625 -4.15625 45.40625 5.171875
+L 45.40625 9.625
+Q 42.625 4.78125 38.28125 2.390625
+Q 33.9375 0 27.875 0
+Q 17.828125 0 11.671875 7.65625
+Q 5.515625 15.328125 5.515625 27.984375
+Q 5.515625 40.671875 11.671875 48.328125
+Q 17.828125 56 27.875 56
+Q 33.9375 56 38.28125 53.609375
+Q 42.625 51.21875 45.40625 46.390625
+L 45.40625 54.6875
+L 54.390625 54.6875
+z
+" id="DejaVuSans-103"/>
+ </defs>
+ <use xlink:href="#DejaVuSans-114"/>
+ <use x="38.863281" xlink:href="#DejaVuSans-111"/>
+ <use x="100.044922" xlink:href="#DejaVuSans-119"/>
+ <use x="181.832031" xlink:href="#DejaVuSans-45"/>
+ <use x="217.916016" xlink:href="#DejaVuSans-108"/>
+ <use x="245.699219" xlink:href="#DejaVuSans-101"/>
+ <use x="307.222656" xlink:href="#DejaVuSans-118"/>
+ <use x="366.402344" xlink:href="#DejaVuSans-101"/>
+ <use x="427.925781" xlink:href="#DejaVuSans-108"/>
+ <use x="455.708984" xlink:href="#DejaVuSans-32"/>
+ <use x="487.496094" xlink:href="#DejaVuSans-116"/>
+ <use x="526.705078" xlink:href="#DejaVuSans-114"/>
+ <use x="567.818359" xlink:href="#DejaVuSans-105"/>
+ <use x="595.601562" xlink:href="#DejaVuSans-103"/>
+ <use x="659.078125" xlink:href="#DejaVuSans-103"/>
+ <use x="722.554688" xlink:href="#DejaVuSans-101"/>
+ <use x="784.078125" xlink:href="#DejaVuSans-114"/>
+ </g>
+ </g>
+ <g id="line2d_78">
+ <path d="M 261.899688 293.004312
+L 281.899688 293.004312
+" style="fill:none;stroke:#0000ff;stroke-linecap:square;stroke-width:1.5;"/>
+ </g>
+ <g id="line2d_79">
+ <g>
+ <use style="fill:#0000ff;stroke:#0000ff;stroke-linejoin:miter;" x="271.899688" xlink:href="#m31534e7702" y="293.004312"/>
+ </g>
+ </g>
+ <g id="text_13">
+ <!-- statement-level trigger -->
+ <g transform="translate(289.899688 296.504312)scale(0.1 -0.1)">
+ <defs>
+ <path d="M 34.28125 27.484375
+Q 23.390625 27.484375 19.1875 25
+Q 14.984375 22.515625 14.984375 16.5
+Q 14.984375 11.71875 18.140625 8.90625
+Q 21.296875 6.109375 26.703125 6.109375
+Q 34.1875 6.109375 38.703125 11.40625
+Q 43.21875 16.703125 43.21875 25.484375
+L 43.21875 27.484375
+z
+M 52.203125 31.203125
+L 52.203125 0
+L 43.21875 0
+L 43.21875 8.296875
+Q 40.140625 3.328125 35.546875 0.953125
+Q 30.953125 -1.421875 24.3125 -1.421875
+Q 15.921875 -1.421875 10.953125 3.296875
+Q 6 8.015625 6 15.921875
+Q 6 25.140625 12.171875 29.828125
+Q 18.359375 34.515625 30.609375 34.515625
+L 43.21875 34.515625
+L 43.21875 35.40625
+Q 43.21875 41.609375 39.140625 45
+Q 35.0625 48.390625 27.6875 48.390625
+Q 23 48.390625 18.546875 47.265625
+Q 14.109375 46.140625 10.015625 43.890625
+L 10.015625 52.203125
+Q 14.9375 54.109375 19.578125 55.046875
+Q 24.21875 56 28.609375 56
+Q 40.484375 56 46.34375 49.84375
+Q 52.203125 43.703125 52.203125 31.203125
+z
+" id="DejaVuSans-97"/>
+ </defs>
+ <use xlink:href="#DejaVuSans-115"/>
+ <use x="52.099609" xlink:href="#DejaVuSans-116"/>
+ <use x="91.308594" xlink:href="#DejaVuSans-97"/>
+ <use x="152.587891" xlink:href="#DejaVuSans-116"/>
+ <use x="191.796875" xlink:href="#DejaVuSans-101"/>
+ <use x="253.320312" xlink:href="#DejaVuSans-109"/>
+ <use x="350.732422" xlink:href="#DejaVuSans-101"/>
+ <use x="412.255859" xlink:href="#DejaVuSans-110"/>
+ <use x="475.634766" xlink:href="#DejaVuSans-116"/>
+ <use x="514.84375" xlink:href="#DejaVuSans-45"/>
+ <use x="550.927734" xlink:href="#DejaVuSans-108"/>
+ <use x="578.710938" xlink:href="#DejaVuSans-101"/>
+ <use x="640.234375" xlink:href="#DejaVuSans-118"/>
+ <use x="699.414062" xlink:href="#DejaVuSans-101"/>
+ <use x="760.9375" xlink:href="#DejaVuSans-108"/>
+ <use x="788.720703" xlink:href="#DejaVuSans-32"/>
+ <use x="820.507812" xlink:href="#DejaVuSans-116"/>
+ <use x="859.716797" xlink:href="#DejaVuSans-114"/>
+ <use x="900.830078" xlink:href="#DejaVuSans-105"/>
+ <use x="928.613281" xlink:href="#DejaVuSans-103"/>
+ <use x="992.089844" xlink:href="#DejaVuSans-103"/>
+ <use x="1055.566406" xlink:href="#DejaVuSans-101"/>
+ <use x="1117.089844" xlink:href="#DejaVuSans-114"/>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+ <defs>
+ <clipPath id="p3133748476">
+ <rect height="266.112" width="357.12" x="57.6" y="41.472"/>
+ </clipPath>
+ </defs>
+</svg>