从MSSQL数据库获取异步信息
我有一个用Python做的网页,它从MSSQL数据库里获取信息,使用的是pyodbc这个库。
这个方法是可行的,但因为有些查询比较复杂,网页加载可能需要20到30秒。
我想解决这个问题,最好的办法是每15到30分钟运行一次所有查询,把数据存储在服务器上或者本地,然后在网页加载时直接使用这些数据,而不是每次都重新查询。
我希望网页访问数据的速度能比较快,这样访问网页最多只需要1到2秒。
Redis的速度很快,但它太简单了,不太适合我,因为我只需要存储一些键值对。其实我需要的只是一个有几行几列的表格(总是少于10行)。
有没有比较快的方法可以在本地存储这些数据呢?
1 个回答
0
我在制作大型报告时遇到了这个问题。没有人会愿意等30秒来执行一个查询,即使这个查询是要查15年前的销售数据。
你有几个选择:
- 在SQL Server Agent中创建一个SQL作业,运行一个存储过程来执行查询,并把结果保存到一个表里。(这就是我做的方式)
- 使用计划任务来运行查询,并把结果保存到另一个表。我觉得可以用Python在Windows上实现,但我自己没用过。我会选择在.NET中实现。
- 有时候创建一个视图就能提升性能,但这要看你的数据和数据库的设置。此外,检查一下是否有索引或者其他常见的性能提升方法可以使用。
我真的觉得第一种方法很优雅、简单,而且所有的工作都在数据库里完成。