【发布时间】:2013-05-07 22:28:19
【问题描述】:
我有一系列包含类似格式数据的表格。 IE。 UNION 会起作用。
从概念上讲,您可以将其视为 1 个表分区为多个表。
我想对所有这些表中的数据进行排序。
现在我遇到的问题是数据太多,无法一次全部显示给用户,所以我需要分部分显示它们,即页面。
现在我的问题是我需要显示已排序的数据(如前所述)。
所以如果我这样做:
SELECT FROM TABLE_1
UNION
SELECT FROM TABLE_2
UNION
....
SELECT FROM TABLE_N
ORDER BY COL
LIMIT OFFSET, RECORDS;
我会经常使用UNION 和ORDER BY 来获取例如每个请求的页面只有相应的 50 条记录。
那么我将如何最有效地处理这个问题?
【问题讨论】:
-
您可以将数据选择到临时表中,然后为页码或其他内容添加一列吗?
-
@DavidStarkey:所以创建一个类似查找表的东西?
-
@DavidStarkey: 这样做的流程是什么?在应用程序级别,如果没有这样的临时表,我创建一个然后将其用于请求?还是其他方式?
-
对“分页”做一些研究。
-
新表只需要包含相关数据。根据数据的排序方式,您可以在表格底部添加新条目 (
WHERE newTable.MAX(timestamp)<otherTables.Timestamp),这样可以确保您拥有所有数据,而不必每次都检查一遍。这实际上完全取决于您的查询进行的速度。如果您提供的查询运行得很快,那么每次请求数据时,创建一个临时表(按您的需要排序)并从中选择 ID 介于正确值(1-50、51-100 等)之间的位置。
标签: mysql sql algorithm sorting