【问题标题】:SQL Views vs MS Access QueriesSQL 视图与 MS 访问查询
【发布时间】:2018-12-09 23:29:28
【问题描述】:

我使用 SQL Server 迁移向导将我的所有表转移到后端 MS-SQL Server。表单、报告和查询等其他对象仍在我的 Access Front-End 中。我正在考虑将包含多个表和连接语句的复杂查询转换为传递查询,但我的一些讨论帖子建议将查询存储在 SQL Server 中,而不是使用传递查询或将查询留在 MS Access 中。

为什么在 SQL Server 上进行查询是个好主意?真的比使用传递查询更好吗?

【问题讨论】:

    标签: sql-server ms-access


    【解决方案1】:

    使用传递查询 (PT) 或视图意味着在这两种情况下 SQL 都是服务器端的。因此,使用 PT 查询、视图和从 Access 调用存储过程之间在性能上并没有真正的差异。

    PT 查询的主要缺点是它们是只读的。因此 VBA 代码和表单无法根据 PT 查询更新某些内容。

    但是视图是可更新的,性能是相同的。

    如果表单要通过表链接直接绑定到 SQL Server 上的表(比如有 100 万行),那么如果您在启动时总是使用标准 VBA where 子句打开表单,那么这样的设置就可以了表格。

    因为访问表单基于一个表(和一个要编辑的记录),所以在这种情况下,通过使用 PT 查询、视图、存储过程或只是标准链接表到 SQL Server(没有性能优势)。

    但是在您的问题中,您提到了具有多个表/连接等的“复杂”SQL。

    在这种情况下,PT 查询适用于报告,并且可能有一些表单可以“显示”用于搜索的数据等。但是,用于编辑的表单必须是视图或链接表。如前所述,PT 查询是只读的。

    由于 99% 的表单都基于一个表,因此继续使用链接表到 SQL Server 将执行得很好(只要记住上面的规则,始终将此类表单打开到一个记录)。

    所以 PT 查询和视图实际上是一回事——它们都运行在服务器端。唯一真正的区别是您不能存储 PT 查询服务器端,但您可以查看视图。因此,“视图”实际上很像本地保存的访问查询 - 与 PT = 只读相比,它是读/写的。

    因此,对于报告,您可以省去设置 pt 查询的麻烦,但对于参数和过滤,您会发现视图是更好的选择。 (因为如果您有该报告的现有 VBA 过滤器代码 - 它可以保持不变,并且只有满足过滤器(where 子句 - 不是实际的报告过滤器)的记录才会受到尊重。

    请注意,如果表单或报表基于一个表(链接表),Access 会做得相当好。在这种情况下,当您打开报表或表单时,Access 只会下拉满足您为报表或表单提供的“where”子句的记录。

    这意味着对于基于 Access 中的复杂查询的报表,您将查询转换为 SQL Server 侧视图,然后将报表链接到该视图以代替查询。这很好,因为如前所述,您的过滤器将像以前一样工作,并且您无需经历设置 PT 查询的所有麻烦,这往往比创建该视图更麻烦。

    因此,PT 查询并不比视图更好或更快,但视图有几个优点。这往往意味着 Access 客户端中没有代码更改,并且如前所述,视图是读/写的,而不是只读的 PT 查询。

    所以 PT 和视图都运行在服务器端,但是为了便于开发和对 Access 端代码的更改最少,视图往往是更好的选择,此外,如前所述,PT 查询不存储在服务器端,但当您将 PT 查询发送到服务器时,肯定会运行服务器端。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-20
      • 2019-02-18
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      • 2021-04-12
      • 2012-05-07
      • 1970-01-01
      相关资源
      最近更新 更多