在我们的web应用程序中,搜索结果显示在可排序表中。用户可以单击任何列并对结果进行排序。问题是,有时用户会进行广泛的搜索,并获得大量返回的数据。要使可排序的部分工作,您可能需要所有的结果,这需要很长的时间。或者我一次可以检索几个结果,但是排序不会很好。显示可能包含大量数据的可排序表的最佳实践是什么?
谢谢你的建议。我一定会再看一遍。
我们正在使用现有的Javascript框架,该框架具有可排序的功能;“很多”结果意味着数百个结果。问题是我们的用户在某个远程站点,而大量的延迟是从数据中心发送/接收数据的网络时间。在数据库端对数据进行排序,一次只发送一个页面的结果是很好的;但是当用户单击某个列标题时,将完成另一次往返操作,这通常会增加3-4秒。
嗯,我想这可能是网络团队的问题:)
发布于 2008-09-22 20:54:54
您应该在数据库服务器上进行分页。例如,SQL 2005和SQL 2008有分页技术。我建议查看您正在查看的任何系统的分页选项。
发布于 2008-09-23 01:44:40
在SQL 2005及以上的SQL 2005中,您使用什么数据库作为良好的分页选项,使用ROW_NUMBER在服务器上进行分页。我在克里斯蒂安·达莉的博客上找到了这个很好的
这个程序是用来把产品按类别分页的。您只需传入您想要的页码和页面上的产品数量等等。
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发布于 2008-09-22 20:56:06
您可以在服务器上进行排序。AJAX将消除完全刷新的必要性,但仍然会出现延迟。在排序方面,数据库的速度通常非常快。
https://stackoverflow.com/questions/117570
复制相似问题