mysql - 我应该选择多少行?
问题描述
我有一个包含 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 建议的那样)。您还可以按照此处所述执行“分页”(What is the best way to pagate results in SQL Server)。
但是,如果这 80,000 条记录不长(例如,整个记录集的数据不到 1 兆字节),我可以说将这些记录一次全部传输到客户端然后在带有过滤器等的客户端。
是在数据库中执行分页,还是在客户端中进行过滤,很大程度上取决于几个因素:用户的连接速度如何;他们为带宽支付的费用是多少?客户端是否足够强大,可以操作大型数据集;每个用户平均需要进行多少次数据库往返。
祝你好运!
推荐阅读
- python - 如何在我的代码中实现回归模型图?
- asp.net - 在 IIS 上运行 Web 应用程序时出现 BadImageFormatException,但我的所有项目都是任何 CPU
- sql - 将 DATEDIFF 拆分为单独的月份
- amazon-web-services - 无法让 aws:PrincipalOrgID 与创建订阅过滤器一起使用
- node.js - 如何使用 MongoDB 格式化 JSON 以与 Highcharts 一起使用?
- asp.net-mvc - 在 ASP.NET Core 2.2 MVC 开发与生产环境中捆绑
- python - 如何使用 fft 为音频创建低通滤波器
- javascript - 如何通过 $refs 向 Vue 组件添加类
- tableau-api - 如何使用连接和联合进行复制?
- python - Python 不按给定字符串的顺序打印