SQL瓶颈,如何修复

SQL瓶颈,如何修复,sql,ms-access,lotus-notes,Sql,Ms Access,Lotus Notes,这与我以前的线程有关: 然而,我有点明白了问题所在。问题(如前一个线程中所述)不是插入(尽管插入速度仍然很慢),而是数据本身的循环 考虑下面的代码: Dim rs As DAO.Recordset Dim sngStart As Single, sngEnd As Single Dim sngElapsed As Single Set rs = CurrentDb().QueryDefs("select-all").OpenRecordset MsgBox "All records re

这与我以前的线程有关:

然而,我有点明白了问题所在。问题(如前一个线程中所述)不是插入(尽管插入速度仍然很慢),而是数据本身的循环 考虑下面的代码:

 Dim rs As DAO.Recordset
Dim sngStart As Single, sngEnd As Single
Dim sngElapsed As Single



Set rs = CurrentDb().QueryDefs("select-all").OpenRecordset
MsgBox "All records retreived"

sngStart = Timer
Do While Not rs.EOF
    rs.MoveNext
Loop
sngEnd = Timer
sngElapsed = Format(sngEnd - sngStart, "Fixed") ' Elapsed time.

MsgBox ("The query took " & sngElapsed _
    & " seconds to run.")
正如您所看到的,这个循环没有任何作用。您希望它在几秒钟内完成,但运行大约需要857秒(或15分钟)。我不知道为什么它这么慢。也许是LotusNotesSQL驱动程序

还有其他想法吗?(基于java的解决方案,任何其他解决方案)


我的目标是:从远程服务器获取所有数据并插入到本地访问表中

我的建议是创建一个传递查询,从远程服务器获取数据。然后创建一个Make表查询,该查询使用上述查询作为其源。然后,您的功能将简化为对第二个查询的调用。

我的建议是创建一个直通查询,从远程服务器获取数据。然后创建一个Make表查询,该查询使用上述查询作为其源。然后,您的函数将简化为对第二个查询的调用。

循环没有“什么都不做”,而是调用MoveNext,这可能会做很多。

循环没有“什么都不做”,而是调用MoveNext,这可能会做很多。

这在NotesSQL中有一些关于性能调整的信息。如果还没有,请从Notes视图而不是Notes表单中选择数据。NotesSQL将利用视图中的索引进行更快的查询。您可能需要在Notes数据库中创建该视图,但性能优势将使其更有价值。

本文提供了有关NotesSQL中性能调优的一些信息。如果还没有,请从Notes视图而不是Notes表单中选择数据。NotesSQL将利用视图中的索引进行更快的查询。您可能需要在Notes数据库中创建视图,但性能方面的好处会让它变得有价值。

我个人几乎从不循环浏览记录,而是以集合而不是循环的方式处理数据库数据。您希望检索多少记录?通过什么连接?通过LotusNotes SQL视图大约6000。使用notesSQL驱动程序。就我个人而言,我几乎从不循环记录,而是以集合而不是循环的方式处理数据库数据。您要检索多少记录?通过什么连接?通过LotusNotes SQL视图大约6000。我已经有了passthrough查询(从远程服务器获取数据)。我将研究make table查询。如果您在新查询上更改为SQL视图,只需从passthroughquery执行Select*到newtable,我很高兴您被引导到NotesSQL文档。这个问题必须是外部访问的。我已经有了passthrough查询(从远程服务器获取数据)。我将研究make table查询。如果您在新查询上更改为SQL视图,只需从passthroughquery执行Select*到newtable,我很高兴您被引导到NotesSQL文档。问题必须是外部访问。对,所以我需要它停止大量工作,只需将该死的数据传输到我的本地访问表中即可首先,我需要它停止大量工作,只需将该死的数据传输到我的本地访问表即可P