我有一个应用程序,用户可以在其中查看他发布的所有问题的历史记录。这些必须按照最新到最旧的顺序显示。我正在 Android 中实现这一点。
我有两个问题
1)我没有存储提出问题的时间。postgres 是否在内部存储插入行的时间戳?
2)在移动设备中,一次只能显示几个帖子。因此,当用户滚动时,应该显示新行。所以在数据库中,是否可以像给我前 10 行、10-20 行等查询。
1)我没有存储提出问题的时间。postgres 是否在内部存储插入行的时间戳?
不。您可以通过使用TIMESTAMP WITH TIME ZONE(timestamptz简称) 并使用适当的函数设置默认值来创建一个。(您可以选择数据库事务开始的时间戳、INSERT语句的执行开始或处理行的时刻——以最适合您的需要为准。)不要试图使用TIMESTAMP WITHOUT TIME ZONE(默认值,如果您只是说TIMESTAMP)——你会后悔第一次达到夏令时界限。
2)在移动设备中,一次只能显示几个帖子。因此,当用户滚动时,应该显示新行。所以在数据库中,是否可以像给我前 10 行、10-20 行等查询。
这个有点棘手。
您可以使用非事务性游标,但只要游标处于打开状态,就会阻止数据库维护操作,因此您要确保时间不是无限的。
您可以使用OFFSETand LIMIT,但是如果您需要一个 big OFFSET,这会变慢,因为它每次都必须通读所有前面的行。如果在您翻页时修改数据也会变得很奇怪。
您可以保存所显示内容末尾的值并运行查询LIMIT以获取该内容之外的行。这个表现不错;唯一真正的缺点是编程的复杂性。
当他们第一次请求它时,您可以将整个列表运行到存储在数据库之外的某个位置,然后从那里滚动。甚至可以为此使用临时表,具体取决于其他详细信息。
这是人们总是在整理的一个问题,我不认为任何一个答案对所有情况都是最好的。
| 归档时间: |
|
| 查看次数: |
345 次 |
| 最近记录: |