1 回答
TA贡献1827条经验 获得超4个赞
滚动浏览可能有数千条记录
编写查询,可能是临时的,以过滤出更少的记录。如果管理员需要滚动浏览超过几十条记录,那么你(和数据库)就让他失望了。
分页——不要使用OFFSET
; “记住你离开的地方”:http: //mysql.rjweb.org/doc.php/pagination
分区——否;你还没有提出一个它会受益的案例。你可以简单地说WHERE name LIKE 'J%'
or WHERE name >= 'P' AND name < 'T'
(for p,q,r,s)并INDEX
name
以;开头 但我怀疑这是否真的对管理员有帮助。
“一个不断向下钻取的递归函数”——这就是 BTree 索引已经为您做的事情。简单地做WHERE name > $leftoff ORDER BY name LIMIT 20
。即,LIMIT
用于桶大小;同时不要打扰预定义桶边界。
“潜在内存使用”——让数据库拥有大部分可用内存通常更好。
1 表 vs 3 -- 请详细说明这些表中的内容。
搜索中
正如其他人所说,使用某种搜索机制可能是找到所需记录的最快方法。不要让管理员滚动浏览数千行。
提供一个表格,其中包含一项或多项内容供管理员填写
完整的用户名。(问题:拼写错误/不知道确切的拼写)
通配符部分名称。例子:'段%'; 然后显示所有以 Dan 开头的用户名。
大量的超链接列表,每个用户一个。最多可达几千个;我会建议不要这样做。
用户的一个属性——开始日期、无活动等等。然后搜索该属性。
对于这些部分情况,拒绝显示超过100个用户名;如果不止于此,请要求管理员提供更多详细信息。不要为分页增加的复杂性而烦恼。
我已经实施了各种这些和其他机制。回想起来,我唯一一次对几十个项目使用分页是在我需要对所有项目采取行动时。示例:从旅行中的一千张图片中挑选一张放入“相册”。这包括看每张照片足够长的时间来挑选或拒绝每一张。此外,我使用 AJAX 来单击一次所需的所有操作。
- 1 回答
- 0 关注
- 98 浏览
添加回答
举报