Ver código fonte

query not so slow

Eren Yilmaz 6 anos atrás
pai
commit
595947b0e7
2 arquivos alterados com 7 adições e 15 exclusões
  1. 7 14
      cool_query.py
  2. 0 1
      model.py

+ 7 - 14
cool_query.py

@@ -4,20 +4,13 @@ from client_controller import _my_tabulate
 model.connect()
 model.cursor.execute('''
         EXPLAIN QUERY PLAN
-        SELECT name, course,
-            (SELECT SUM(amount)
-            FROM ownership
-            WHERE ownership.ownable_id = ownables_with_course.rowid) market_size
-        FROM (SELECT
-                name, ownables.rowid,
-                CASE WHEN ownables.rowid = ? 
-                THEN 1
-                ELSE (SELECT price
-                      FROM transactions
-                      WHERE ownable_id = ownables.rowid
-                      ORDER BY rowid DESC -- equivalent to ordering by dt
-                      LIMIT 1) END course
-             FROM ownables) ownables_with_course
+                UPDATE orders
+                SET stop_loss = NULL,
+                    "limit" = NULL
+                WHERE stop_loss IS NOT NULL
+                AND stop_loss
+                AND ? IN (SELECT ownable_id FROM ownership WHERE rowid = ownership_id)
+                AND ((buy AND "limit" < ?) OR (NOT buy AND "limit" > ?))
         '''.replace('?', '1'))
 
 # model.cursor.execute('''

+ 0 - 1
model.py

@@ -765,7 +765,6 @@ def execute_orders(ownable_id):
 
         # trigger stop-loss orders
         if buyer_id != seller_id:
-            # todo optimize this query, very slow like this
             cursor.execute('''
                 UPDATE orders
                 SET stop_loss = NULL,