Access是一个常见的神话,拉动整个表。 对于网络中基于文件(accDB)后端的情况,只有在索引可以使用时,访问才会拉取记录。因此,如果您有一张包含100万条记录的表格,并构建了一个可以重新调谐一个客户的查询,那么只有该客户被从该表格中取出(假设索引可用)。实际上,如果表格在本地计算机上,或者在某个网络驱动器上,它的工作方式并不重要。在这两种情况下访问将读取索引的一小部分,然后寻找文件的正确部分并提取一条记录。如果没有索引可用,则会发生全表扫描。
而且如果后端如果SQL服务器也是如此。再一次,基于该表的条件的访问查询(或表单)只会拉下一行数据 - 而不是整个表。在这种情况下,索引不是必需的。如果没有可用的索引,那么将在SQL服务器上执行全表扫描,并且当它找到一行时 - 将该行发送到客户端。 对于基于文件的后端,服务器上没有发生真正的处理(它只是“读取”文件,就像一个哑磁盘驱动器)。所以Access只是将它看作是坐在磁盘驱动器上的文件。由于当文件是本地的,或者坐在某个服务器驱动器上时,Access不会读取+拉入整个表格,那么这种工作方式不会改变。
当可以使用索引时,访问不会将全表读入内存。该表位于本地驱动器,USB跳转驱动器或某个服务器驱动器的事实不会改变Access的工作方式。
当索引可用时,访问并不会读取整个表 - 文件的位置不会改变这个过程。因此,在文件服务器上不会发生真正的处理 - 文件只是基于从Access访问的命令读取磁盘中的位和基于索引读取文件的某些部分。
我还应该指出,上述过程在使用SQL服务器时不需要传递查询。您可以打开一个绑定到具有100万行SQL服务器的链接表的表单 - 如果使用openform命令提供的“where”子句启动该表单,则只有1条记录遍历网络管道 - 再次无法通过甚至对于直接绑定到SQL Server的链接表的表单也需要查询。