2017-07-19 28 views
0

环顾四周,用与QSqlTableModel,让所有行了一个表的方式是与QSqlTableModel fetchMore()疯狂低效

select(); 
while(canFetchMore()) { 
    fetchMore(); 
} 

的第一选择似乎很好,但fetchMore()似乎抢单一次排。我正在锤炼Sql服务器,并且约350行的读取花费了几秒钟的时间,更不用说浪费了一堆CPU。

数据库是SQL-Server。有没有更好的办法?

+0

取更多应与分页使用,而不是下载整个表。你应该显示第一页,并把一个按钮触发获取更多... –

+0

我需要整个表 - 它不一定是显示...我必须比较表。看起来像QSqlQueryModel会更好。 –

回答

0

编辑:经过一些挖掘和从DBA的帮助,我可以证实,我从两个不同的数据库中获得不同的行为。不幸的是,它们是相同版本的SQL Server,并且两者都使用Linux上的ODBC驱动程序(由Microsoft编写)。在表单下,将选择256行,然后fetchMore()的每次迭代将选择另外256行。对于另一个,select()和fetchMore()一次只会得到一行,并且会导致各种问题。

不幸的是,我的解决方案是将QSqlQuery传递给QSqlDatabase。