我一直试图让我在Access 2007数据库中使用这个SQL查询来更快地执行。我已经消除了所涉及的任何不同的查询 - 并且Access并没有真正给我太多关于挂断位置的信息。该查询正在拉动大约150,000行,并且大约需要2分钟才能完成。
我仍在学习访问中sql的语法,但我认为我已正确设置它。我很欣赏任何关于我可能遗失的见解或提示。
SELECT OLS_UNITS_GROSS_ACRES.AGMT_NUM,
MAX(OLS_UNITS_GROSS_ACRES.UNIT_GROSS_ACRES) AS UNIT_GROSS,
SUM(MIS_ACREAGES.ACRE_AMT) AS [RELATED ACRES]
FROM ((OLS_UNITS_GROSS_ACRES
INNER JOIN MIS_XREFERENCED_AGMTS_M ON OLS_UNITS_GROSS_ACRES.ARRG_KEY = MIS_XREFERENCED_AGMTS_M.ACTIVE_ARRG_KEY)
INNER JOIN ALL_AGMTS1 ON = MIS_XREFERENCED_AGMTS_M.RELATED_ARRG_KEY = ALL_AGMTS1.ARRG_KEY)
INNER JOIN MIS_ACREAGES ON ALL_AGMTS1.ARRG_KEY = MIS_ACREAGES.ARRG_KEY
WHERE (((ALL_AGMTS1.SUBJ_CODE)="LSE")
AND (((MIS_ACREAGES.ACRE_TYPE_CODE)="CNT")
OR ((MIS_ACREAGES.ACRE_TYPE_CODE)="STN")
OR ((MIS_ACREAGES.ACRE_TYPE_CODE)="DNT")))
GROUP BY OLS_UNITS_GROSS_ACRES.AGMT_NUM;
答案 0 :(得分:0)
您可以尝试几种方法。消除任何DISTINCT查询是一个良好的开端。另一种加快速度的方法是为经常查询和排序的字段创建索引。这将加速SELECT查询,但它确实减慢了任何INSERT命令,因为它现在必须将信息插入到索引和表中。
如果您的数据库设计稳定且其对象不会要重命名,您可以安全地关闭名称自动更正以提高性能。
随着时间的推移,由于仍然分配给已删除或临时对象的空间,数据库文件的性能可能会变慢。 Compact和Repair命令消除了这个浪费的空间,可以帮助数据库更快,更高效地运行。
我从以下链接获得了大部分内容。它有其他几个想法,但那些是最好的; http://office.microsoft.com/en-us/access-help/help-access-run-faster-HA010235589.aspx