【发布时间】:2014-01-25 05:10:52
【问题描述】:
我需要对表格进行永久排序。我无法控制如何创建数据库或其表。我有一个用 c++ 编写的程序,它有几种方法可以对数据库及其表执行不同的操作。例如打印、召回行、更新行、下载行、更新行等等。
我目前在排序数据库中。它需要根据指定的列对数据库进行实际排序,如果用户指定一个列,则可以按另一列进行子排序。因此,如果使用第三方应用程序查看排序完成后,所有数据都会显示排序。
我知道 SELECT * FROM table1 ORDER BY Col1, Col2 将返回已排序的表,但从实际内存的角度来看,所有数据都是表仍然相同,所以如果在 ORDER BY 之后 col 1 全部乱序数据库查看器仍然会乱序显示 col 1。排序后,数据库中的数据应进行排序,在数据库查看器中查看时,一切都井井有条。
这是我第一篇文章的完整编辑。仅供参考
【问题讨论】:
-
为什么?你不使用索引吗?我闻起来像XY problem。
-
我相信您正在尝试解决错误的问题。您想通过这一切达到什么目的?
-
您应该在数据库中创建要排序的字段的索引,然后在这些字段上使用“排序依据”,数据库将进行排序。索引 is 正是您正在寻找的“永久存储”排序,除非我误解了您需要它的 原因。
-
可能是这里的 XY 问题,对此感到抱歉:/ 我无法控制数据库的创建方式。对于一些背景知识,用户自己创建一个数据库,然后在程序中打开该数据库。我有几个不同的命令可以执行,例如打印、调用行、更新行等。其中一个命令是排序数据库。现在,此命令需要根据他们指定的列对数据库进行排序,如果他们指定第二列,则可以进一步对数据库进行子排序。实现这一目标的最佳方法或方法是什么?我充其量是一个sqlite新手。您能否详细说明索引
-
无论您是否创建索引,我都会根据用户的选择create a view,然后将其用作数据源。在排序列上创建索引将提高性能。