Neuer index auf inventory über itime und parts_id
authorG. Richardson <grichardson@kivitec.de>
Mon, 25 Feb 2019 15:03:29 +0000 (16:03 +0100)
committerG. Richardson <grichardson@kivitec.de>
Sun, 11 Aug 2019 09:34:20 +0000 (11:34 +0200)
Um Abfragen wie
* letzte 10 Lagerbuchungen
* letzte 10 Lagerbuchungen von Artikel XYZ
zu beschleunigen

SL/DB/Part.pm
sql/Pg-upgrade2/inventory_itime_parts_id_index.sql [new file with mode: 0644]

index 9eb76df..db3a266 100644 (file)
@@ -373,7 +373,7 @@ sub get_simple_stock_sql {
             LEFT JOIN warehouse w ON (i.warehouse_id = w.id)
             LEFT JOIN bin b       ON (i.bin_id       = b.id)
       WHERE parts_id = ?
-   GROUP BY w.description, b.description, p.unit, i.parts_id
+   GROUP BY w.description, w.sortkey, b.description, p.unit, i.parts_id
      HAVING SUM(qty) != 0
      WINDOW pt AS (PARTITION BY i.parts_id    ORDER BY w.sortkey, b.description, p.unit),
             wh AS (PARTITION by w.description ORDER BY w.sortkey, b.description, p.unit)
diff --git a/sql/Pg-upgrade2/inventory_itime_parts_id_index.sql b/sql/Pg-upgrade2/inventory_itime_parts_id_index.sql
new file mode 100644 (file)
index 0000000..36cd99c
--- /dev/null
@@ -0,0 +1,13 @@
+-- @tag: inventory_itime_parts_id_index
+-- @description: Index auf inventory itime und parts_id, um schnell die letzten Transaktion raussuchen zu können
+-- @depends: release_3_5_4
+
+-- increase speed of queries such as
+
+-- last 10 entries in inventory:
+-- SELECT * FROM inventory ORDER BY itime desc LIMIT 10
+
+-- last 10 inventory entries for a certain part:
+-- SELECT * FROM inventory WHERE parts_id = 1234 ORDER BY itime desc LIMIT 10
+
+CREATE INDEX inventory_itime_parts_id_idx ON inventory (itime, parts_id);