首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有大量数据的可排序表的最佳方法

具有大量数据的可排序表的最佳方法
EN

Stack Overflow用户
提问于 2008-09-22 20:52:53
回答 4查看 739关注 0票数 4

在我们的web应用程序中,搜索结果显示在可排序表中。用户可以单击任何列并对结果进行排序。问题是,有时用户会进行广泛的搜索,并获得大量返回的数据。要使可排序的部分工作,您可能需要所有的结果,这需要很长的时间。或者我一次可以检索几个结果,但是排序不会很好。显示可能包含大量数据的可排序表的最佳实践是什么?

谢谢你的建议。我一定会再看一遍。

我们正在使用现有的Javascript框架,该框架具有可排序的功能;“很多”结果意味着数百个结果。问题是我们的用户在某个远程站点,而大量的延迟是从数据中心发送/接收数据的网络时间。在数据库端对数据进行排序,一次只发送一个页面的结果是很好的;但是当用户单击某个列标题时,将完成另一次往返操作,这通常会增加3-4秒。

嗯,我想这可能是网络团队的问题:)

EN

回答 4

Stack Overflow用户

发布于 2008-09-22 20:54:54

您应该在数据库服务器上进行分页。例如,SQL 2005和SQL 2008有分页技术。我建议查看您正在查看的任何系统的分页选项。

票数 3
EN

Stack Overflow用户

发布于 2008-09-23 01:44:40

在SQL 2005及以上的SQL 2005中,您使用什么数据库作为良好的分页选项,使用ROW_NUMBER在服务器上进行分页。我在克里斯蒂安·达莉的博客上找到了这个很好的

这个程序是用来把产品按类别分页的。您只需传入您想要的页码和页面上的产品数量等等。

代码语言:javascript
运行
复制
CREATE PROCEDURE GetProductsInCategory
(@CategoryID INT,
@DescriptionLength INT,
@PageNumber INT,
@ProductsPerPage INT,
@HowManyProducts INT OUTPUT)
AS

-- declare a new TABLE variable
DECLARE @Products TABLE
(RowNumber INT,
 ProductID INT,
 Name VARCHAR(50),
 Description VARCHAR(5000),
 Price MONEY,
 Image1FileName VARCHAR(50),
 Image2FileName VARCHAR(50),
 OnDepartmentPromotion BIT,
 OnCatalogPromotion BIT)

-- populate the table variable with the complete list of products
INSERT INTO @Products
SELECT ROW_NUMBER() OVER (ORDER BY Product.ProductID),
       Product.ProductID, Name, 
       SUBSTRING(Description, 1, @DescriptionLength) + '...' AS Description,
       Price, Image1FileName, Image2FileName, OnDepartmentPromotion, OnCatalogPromotion
FROM Product INNER JOIN ProductCategory
  ON Product.ProductID = ProductCategory.ProductID
WHERE ProductCategory.CategoryID = @CategoryID

-- return the total number of products using an OUTPUT variable
SELECT @HowManyProducts = COUNT(ProductID) FROM @Products

-- extract the requested page of products
SELECT ProductID, Name, Description, Price, Image1FileName,
       Image2FileName, OnDepartmentPromotion, OnCatalogPromotion
FROM @Products
WHERE RowNumber > (@PageNumber - 1) * @ProductsPerPage
  AND RowNumber <= @PageNumber * @ProductsPerPage
票数 2
EN

Stack Overflow用户

发布于 2008-09-22 20:56:06

您可以在服务器上进行排序。AJAX将消除完全刷新的必要性,但仍然会出现延迟。在排序方面,数据库的速度通常非常快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/117570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档