【发布时间】:2011-05-03 13:20:44
【问题描述】:
设置是远程服务器上的 mySQL 数据库,使用 MS Access 2010 作为前端用户界面。
问题出现在基于底层排序查询的表单中,其中默认视图是连续表单:
OrderByOn 属性默认为 False,这不是问题。
用户打开 OrderByOn 属性,使用重新排序记录的按钮 (OrderByOn = True) – 不是问题。
然后用户想要使用原始基础查询排序顺序,使用关闭 OrderByOn (OrderByOn = False) 的按钮 – 出现问题。数据的后续请求不会更新表单。似乎重新查询数据的功能以及 OrderByOn 功能都被关闭了。
问题似乎很重要,因为 OrderByOn 属性似乎没有利用底层的 mySQL 索引。因此,如果无法关闭 OrderByOn,除非绝对需要,否则似乎会导致显着的性能损失。
【问题讨论】:
-
MySQL有SQL追踪工具吗?了解 Jet 向 MySQL 发送的内容会很有用。也许您可以打开 ODBC 日志记录。
-
您使用的是 ODBC 链接表吗?
-
@David-W-Fenton 的观点是,MySQL 确实有 SQL 日志。见MySQL Docs -- The General Query Log注意第二句“服务器在客户端连接或断开连接时将信息写入此日志,并记录从客户端接收的每个SQL语句。”
-
通过在表单查询中使用“select ... order by ..”而不是使用表单的 orderby 属性在服务器端而不是客户端进行排序。这将利用索引。
-
我认为这是msdn.microsoft.com/en-us/library/aa173174(v=office.11).aspx 中指定的正确行为,基本上,当您关闭此功能时,它不应该重新查询数据。你用什么来重新查询数据?