Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 直通查询如何提高速度?_Sql_Sql Server_Tsql_Ms Access - Fatal编程技术网

Sql 直通查询如何提高速度?

Sql 直通查询如何提高速度?,sql,sql-server,tsql,ms-access,Sql,Sql Server,Tsql,Ms Access,我听说传递查询提高了数据检索的速度,因为SQL Server使用的是更快的T-SQL语言。然而,既然JetSQL由ODBC驱动程序转换为T-SQL,那么直通查询又有什么优势呢 对于记录的简单检索:否。正如您所提到的,ODBC驱动程序转发的SQL与您在PT查询中发送的SQL相同 您可以激活ODBC日志记录(查找此项)并签出发送到服务器的SQL。不过,一定要记得再把它关掉 另外,请注意,PT查询始终是只读的。如果您使用MS Access作为前端,而不使用直通查询,Access将通过网络获取它需要的所

我听说传递查询提高了数据检索的速度,因为SQL Server使用的是更快的T-SQL语言。然而,既然JetSQL由ODBC驱动程序转换为T-SQL,那么直通查询又有什么优势呢

对于记录的简单检索:否。正如您所提到的,ODBC驱动程序转发的SQL与您在PT查询中发送的SQL相同

您可以激活ODBC日志记录(查找此项)并签出发送到服务器的SQL。不过,一定要记得再把它关掉


另外,请注意,PT查询始终是只读的。

如果您使用MS Access作为前端,而不使用直通查询,Access将通过网络获取它需要的所有数据,并在本地使用它来运行查询。传递查询不必经历通过网络复制数据的低效过程。

与什么相比提高速度?似乎您对Access数据库引擎如何处理链接表上的正常查询和传递查询缺乏基本了解。这样的主题对于堆栈溢出来说太宽泛了。你最好查一本好的入门书。这个问题没有多大意义。PT查询是使用后端执行的(sql server引擎。您的案例)。本地查询是使用JET引擎执行的,远没有这么简单。关于查询编译、缓存和连接管理的逻辑可能有所不同。在一个简单的小表上快速执行100*本地查询
SELECT*fromsometable
,100*直通查询显示有利于本地查询的时间差为5秒。你的答案不正确,不一样。可能是真的,@ErikvonAsmuth,但查询100次并不是我简单检索的想法。问题是,如果我只查询一次,这还不够重要。我运行了100次相同的查询,每次都打开和关闭。这意味着对于单个查询来说,差异是0.05秒,虽然不多,但并不完全相同,大约是我运行的查询总成本的1/5。这就是我的意思@ErikvonAsmuth-可能会有比优化0.05秒更重要的任务。是的,但仍然不完全相同。问题不是:我是否应该改为使用一种查询来优化性能,问题是:直通查询如何提高速度。这应该在国际海事组织关闭,因为1。他们有时不会,2。不同版本的Access以不同的方式处理直通式查询(2010年不重用连接,2016年在我的设置中重用连接,如果使用identity insert,会导致速度提高+bug),3。这取决于查询的类型,这使得它太宽泛了,但是一个表上的pt查询与标准链接表和绑定报表或表单上的pt查询相比,都只能提取满足“where”子句(您提供的条件)的记录。即使是到sql server的标准链接表也不会将整个表拉入本地。在标准链接表与pt查询的情况下,您看不到任何性能差异。事实上,如上所述,具有非PT查询的表单实际上可能会做得更好,因为它保持连接打开。我还应该补充一点,如果您要求PT查询中的数据与标准链接表中的数据相比,然后,在这两种情况下,access都只会提取满足条件的记录,因此PT查询不会神奇地运行得更快,也不会减少网络流量。如果PT查询涉及多个表(联接)或更新大量记录(可能发生在服务器端),那么它只会运行得更快。但是,使用链接表或PT查询拉取10条记录意味着在这两种情况下只有10条记录通过网络管道。这是一个普遍的误解,即访问会拉动整张桌子——事实并非如此。我的观点是正确的。我没有想到过滤发生在哪里。我一点也没想过。谢谢你的解释。