首先,对不起我的英语。
我有一个C ++桌面应用程序,它从数据库中获取行,并且对于每一行,应用程序创建一个对象,该对象表示该特定表中的该行。每个表都有相应的类(我使用ODB)。
一旦我恢复了表的行,我就会在一个表中显示它们,这些表可以按列排序。每列都有一个" sort"允许根据该列对表条目进行排序的图标。
我的问题是,优质应用通常会做什么?每次必须对表进行排序时进行其他查询?或者手动对对象进行排序,例如使用std :: set?哪个更快?
我认为使用std :: set对条目进行排序更快,因为我们避免与MySQL服务器通信,但同时,如果我们对同一个数据库表重新排序多次,特别是索引,MySQL优化器可能会做一些魔术参与其中。我认为它甚至可能取决于这些排序操作的频率。
无论如何,我想知道这两种方法的利弊。
答案 0 :(得分:1)
许多应用程序让数据库执行大部分工作。
创建表时,应用程序会告诉数据库设置要搜索的列(索引)。数据库通常会创建一个索引表。这使得搜索更快,因为表中数据的顺序不需要排序。
应用程序将向数据库发送查询语句,以便按所需顺序从数据库中选择数据。然后,应用程序迭代数据。
在GUI网格中显示数据时,许多框架会为您执行排序。您告诉GUI哪个列用于排序并具有GUI功能,然后显示数据。真实应用程序尽可能使用现有的库和框架。
如果您的表有足够的内存,请读取数据并对表进行排序。否则,告诉数据库生成新视图并在GUI中重新加载表(必要时)。