我正在专门的服务器上设计PostgreSQL中的数据库。我希望经常运行某些复杂的查询,并使用ODBC/JDBC客户端(如MS-Access或报告软件)访问结果。查看与ODBC查询
正如我所看到的,我可以选择在PostgreSQL中定义VIEW并使用ODBC导入它,或者在ODBC客户端中定义查询并导入基础表。
哪个最好? 有没有其他的选择,我错过了?
我正在专门的服务器上设计PostgreSQL中的数据库。我希望经常运行某些复杂的查询,并使用ODBC/JDBC客户端(如MS-Access或报告软件)访问结果。查看与ODBC查询
正如我所看到的,我可以选择在PostgreSQL中定义VIEW并使用ODBC导入它,或者在ODBC客户端中定义查询并导入基础表。
哪个最好? 有没有其他的选择,我错过了?
我不确定“import”是什么意思。视图本质上是一个预定义的查询,您可以像从表中那样选择数据。当您执行SELECT查询时,无论您是直接访问数据表还是通过视图访问数据表,只会将查询结果发回给您。
如果您必须从各种不同的客户端执行相同的查询,为该查询定义视图可能是一个好主意。
分享和享受。
你说你有复杂的查询来创建你想用于报告目的的输出。
汇总,汇总等操作将以与您描述的几乎相同的方式执行并存储在数据仓库中。
如果这是你想要的,你应该考虑有一个存储查询输出的表。使用计划程序在适当的时候运行ComplexQuery并将输出存储在表中。
你必须决定你为什么要这样做。查询的复杂性不像数据库服务器运行查询所需的资源量那么多。如果这足够小并且不会对性能产生负面影响,并且实时需要数据,请使用View。如果您可以使用定期刷新的数据,并且可以快速使用,并且不会对服务器造成高负载,那么请转到聚合表。
谢谢,我想像'聚合表'的概念将存在,但我不知道它的确如此。 – thomaspaulb 2010-02-09 02:37:19
与PostgreSQL概念相比,它更像是一个数据仓库概念。 – 2010-02-09 02:45:26
是否有可能在PostgreSQL中创建数据仓库? – thomaspaulb 2010-02-09 02:47:14
感谢您的清除..确实没有额外的'导入'ODBC客户端的情况下。你认为这两种情况之间的SQL优化可能有所不同吗? – thomaspaulb 2010-02-09 02:34:58
不,在PostgreSQL中,视图只是替换查询,所以它将以与单个语句相同的方式进行优化。如果查询足够长以致解析开销可测量,则可能会产生影响 - 但如果查询为* complex *,则情况不会如此。一般来说,只要查询是相同的,就不会有可测量的性能差异。 – 2010-02-09 11:16:13