初始sqlalchemy查询返回结果的速度很慢

2024-04-29 09:10:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我是sqlalchemy新手,在针对现有表的简单查询中遇到性能问题。select查询正在筛选表的主键并仅返回该值。即使查询运行得很快,实际返回结果也需要将近两秒钟的时间(见日志底部)。它也只发生在运行的第一个查询上。查看日志,sqlalchemy似乎正在运行几个额外的查询,这至少是造成速度减慢的部分原因(它们不会在后续查询中运行)。我试图理解它为什么要运行这些额外的查询,以及是否有可能阻止它这样做

INFO:     SHOW VARIABLES LIKE 'sql_mode'
2020-02-27 15:08:42,292 INFO sqlalchemy.engine.base.Engine ()
INFO:     ()
2020-02-27 15:08:42,366 INFO sqlalchemy.engine.base.Engine SHOW VARIABLES LIKE 'lower_case_table_names'
INFO:     SHOW VARIABLES LIKE 'lower_case_table_names'
2020-02-27 15:08:42,367 INFO sqlalchemy.engine.base.Engine ()
INFO:     ()
2020-02-27 15:08:42,522 INFO sqlalchemy.engine.base.Engine SELECT DATABASE()
INFO:     SELECT DATABASE()
2020-02-27 15:08:42,522 INFO sqlalchemy.engine.base.Engine ()
INFO:     ()
2020-02-27 15:08:42,666 INFO sqlalchemy.engine.base.Engine show collation where `Charset` = 'utf8mb4' and `Collation` = 'utf8mb4_bin'
INFO:     show collation where `Charset` = 'utf8mb4' and `Collation` = 'utf8mb4_bin'
2020-02-27 15:08:42,667 INFO sqlalchemy.engine.base.Engine ()
INFO:     ()
2020-02-27 15:08:42,743 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS CHAR(60)) AS anon_1
INFO:     SELECT CAST('test plain returns' AS CHAR(60)) AS anon_1
2020-02-27 15:08:42,743 INFO sqlalchemy.engine.base.Engine ()
INFO:     ()
2020-02-27 15:08:42,832 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS CHAR(60)) AS anon_1
INFO:     SELECT CAST('test unicode returns' AS CHAR(60)) AS anon_1
2020-02-27 15:08:42,833 INFO sqlalchemy.engine.base.Engine ()
INFO:     ()
2020-02-27 15:08:42,909 INFO sqlalchemy.engine.base.Engine SELECT CAST('test collated returns' AS CHAR CHARACTER SET utf8mb4) COLLATE utf8mb4_bin AS anon_1
INFO:     SELECT CAST('test collated returns' AS CHAR CHARACTER SET utf8mb4) COLLATE utf8mb4_bin AS anon_1
2020-02-27 15:08:42,910 INFO sqlalchemy.engine.base.Engine ()
INFO:     ()
2020-02-27 15:08:43,130 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
INFO:     BEGIN (implicit)
Start Query: %s SELECT orders.order_number AS orders_order_number 
FROM orders 
WHERE orders.order_number = %s 
 LIMIT %s
2020-02-27 15:08:43,132 INFO sqlalchemy.engine.base.Engine SELECT orders.order_number AS orders_order_number 
FROM orders 
WHERE orders.order_number = %s 
 LIMIT %s
INFO:     SELECT orders.order_number AS orders_order_number 
FROM orders 
WHERE orders.order_number = %s 
 LIMIT %s
2020-02-27 15:08:43,132 INFO sqlalchemy.engine.base.Engine (13145, 1)
INFO:     (13145, 1)

Query Complete!
Query Time: %f 0.0731968879699707 (Generated using: https://docs.sqlalchemy.org/en/13/faq/performance.html)

Total Time: 1.8191041946411133 (Generated by wrapping query call)

Tags: testinfonumberbasesqlalchemyasorderselect