如何存储SQL查询结果以实现快速访问?

如何存储SQL查询结果以实现快速访问?,sql,mysql,multiplatform,Sql,Mysql,Multiplatform,这里是SQL初学者 我有一个大约需要10秒才能运行的查询,因此应用程序的运行速度会减慢 在MySQL或更一般的SQL中,服务器是否可以定期(每1到5分钟)运行查询并将其存储在某个位置,以便我可以查询这个“缓存”表以便于访问 非常感谢 您的应用程序可以有一个线程来唤醒、执行查询、将结果保存到临时表中,而应用程序的其余部分将只使用临时表。您的应用程序可以有一个线程来唤醒、执行查询、将结果保存到临时表中,应用程序的其余部分将只使用临时表。根据查询的内容,您可以通过在表上创建缺少的索引来加快查询速度。放

这里是SQL初学者

我有一个大约需要10秒才能运行的查询,因此应用程序的运行速度会减慢

在MySQL或更一般的SQL中,服务器是否可以定期(每1到5分钟)运行查询并将其存储在某个位置,以便我可以查询这个“缓存”表以便于访问


非常感谢

您的应用程序可以有一个线程来唤醒、执行查询、将结果保存到临时表中,而应用程序的其余部分将只使用临时表。

您的应用程序可以有一个线程来唤醒、执行查询、将结果保存到临时表中,应用程序的其余部分将只使用临时表。

根据查询的内容,您可以通过在表上创建缺少的索引来加快查询速度。放在查询的前面,查看它使用的索引,并尝试找出应该为哪些列编制索引。应该索引的列是where语句中的列,以及联接中使用的任何字段。如果您提供查询和表模式,我们可以帮助推荐一些索引


虽然可能有很多方法可以每5分钟运行一个进程来填充临时表(cron作业、计划任务、从应用程序运行线程),但在采取类似这样的激烈措施之前,最好先用尽索引选项,因为这样可能会占用更多资源。并且不一定会提高应用程序的性能。

根据查询的内容,您可以通过在表上创建缺少的索引来加快查询速度。放在查询的前面,查看它使用的索引,并尝试找出应该为哪些列编制索引。应该索引的列是where语句中的列,以及联接中使用的任何字段。如果您提供查询和表模式,我们可以帮助推荐一些索引


虽然可能有很多方法可以每5分钟运行一个进程来填充临时表(cron作业、计划任务、从应用程序运行线程),但在采取类似这样的激烈措施之前,最好先用尽索引选项,因为这样可能会占用更多资源。并且不一定会提高应用程序的性能。

MySQL中没有这样的调度规定

但是,您始终可以运行计划作业(通过Windows上的调度程序、cron或Unix上使用的任何调度系统上的调度程序)来执行这样的“执行并将结果插入临时表”查询/过程

除了直接的问题之外,还要考虑优化查询——如果您还没有这样做,明智地应用索引和/或重新设计表可能会加快查询速度(但我完全承认,有些查询已经尽可能地优化了)

另一个解决方案是流/分块-让应用程序根据需要检索“下N行”


还考虑缓存TEH应用程序本身的查询结果,而不是用DB缓存,这样缓存不需要数据库访问,甚至更快。

< Py>在MySQL中没有这样的调度条款。 但是,您始终可以运行计划作业(通过Windows上的调度程序、cron或Unix上使用的任何调度系统上的调度程序)来执行这样的“执行并将结果插入临时表”查询/过程

除了直接的问题之外,还要考虑优化查询——如果您还没有这样做,明智地应用索引和/或重新设计表可能会加快查询速度(但我完全承认,有些查询已经尽可能地优化了)

另一个解决方案是流/分块-让应用程序根据需要检索“下N行”


还考虑缓存TEH应用程序本身的查询结果,而不是用DB缓存,这样缓存不需要数据库访问,甚至更快。您可以使用ORM框架为您执行缓存。基本上,您要求的是为您的结果提供缓存解决方案。缓存解决方案可能因供应商和您使用的语言而异。

当然,此解决方案目前可能超出您的范围。您可以使用ORM框架为您执行缓存。基本上,您要求的是为您的结果提供缓存解决方案。缓存解决方案可能因供应商和您使用的语言而异。

是的。Oracle有物化视图。看起来它们在MySQL中也可用。物化视图无法安排,所以请收回您的否决票,因为我是100%正确的。更不用说根据rexem的评论,它们在MySQLIn oracle中是不可访问的,它们可以安排。查找它。alter materialized view yourmv刷新从sysdate开始下一个sysdate+间隔“1”分钟;有。Oracle有物化视图。看起来它们在MySQL中也可用。物化视图无法安排,所以请收回您的否决票,因为我是100%正确的。更不用说根据rexem的评论,它们在MySQLIn oracle中是不可访问的,它们可以安排。查找它。alter materialized view yourmv刷新从sysdate开始下一个sysdate+间隔“1”分钟;发布查询,尽管性能差表明数据模型有问题…发布查询,尽管性能差表明数据模型有问题。。。