我有一个包含100,000个项目的sql数据库。
当我执行 SELECT 查询以向用户显示其项目标题时,我应该显示多少个项目?
使用 SELECT 抓取所有 80,000 个项目(与用户相关的项目(是否被视为不良做法?(我假设是(。
我相信这里有两个问题需要考虑:
第一考虑因素
重要的是要考虑用户是否可以理解和浏览 80,000 个项目。一般来说,我认为不会。
例如,Amazon.com 可能有80,000本书与我的兴趣"相关"。但是他们的界面为我提供了过滤器和建议。我永远不需要面对80,000条记录来找到当下我感兴趣的少数记录。
第二个考虑因素
请务必考虑何时将这 80,000 条记录传输到用户界面(从服务器到客户端(,以及客户端应以多大批量大小存储和操作这些记录。
在LTE移动网络之前,我建议将小批量(例如10到100条记录(发送到用户界面。 使用SQL,可以使用LIMIT关键字(如@mukul-kumar-jha建议的那样(。 您还可以按照此处所述执行"分页"(在 SQL Server 中对结果进行分页的最佳方法是什么(。
但是,如果这 80,000 条记录不长(例如,整个记录集的数据少于 1 MB(,我可以争辩说,将这些记录一次性全部传输到客户端,然后使用过滤器等操作客户端中的数据可能会有好处。
是在数据库上执行分页,还是在客户端内进行过滤,很大程度上取决于几个因素:用户的连接速度是多少;他们为带宽支付的费用;客户端是否足够强大来操作大型数据集;每个用户平均需要往返数据库多少次。
祝你好运!
您可以使用LIMIT
/TOP
/ROWNUM
子句来获取有限的行。
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
LIMIT 子句可用于约束 SELECT MySQL 语句返回的行数。您可以将两个参数传递给 LIMIT 约束,这两个参数都是非负整数常量。
SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15
这样,您可以为结果创建分页。
SELECT * FROM tbl LIMIT 5; # Retrieve first 5 rows
你可以对它使用 LIMIT 和 OFFSET 约束。它的语法如下:
LIMIT OFFSET,Value After Offset
这样,您可以为结果创建分页。
SELECT * FROM tbl_name LIMIT 0,10; # Retrieve rows of 0-10
SELECT * FROM tbl LIMIT 10,20; # Retrieve rows of 10-20