你必须实现分页,没有别的办法。您可以使用:
- Next , Previous , Page N模式。这适用于关系数据库
- 获得更多。这适用于
Count
操作成本高昂的 NoSQL 数据库
从可用性的角度来看,没有人真正需要一次 5000 个项目。这就是人们发明搜索的原因。从内存管理中,您只能存储内存允许的数量。当然,交换和内存分页有一些技巧,但这并不能很好地扩展。
如果您关心实时搜索,它会变得更加复杂。
共同点
任何搜索都可以快速进行,因为数据是索引的,或者换句话说是排序的。如果数据已排序,则可以使用二分搜索,这是一种O(Log(N))
操作。
客户端搜索
如果您有 5000 个项目,例如在客户端将城市作为字符串,则可以在本地缓存该数据,对其进行一次排序,然后运行快速搜索查询。
您还可以发明对图像标签的搜索并将图像标签/描述存储在内存中。
This approach is limited to small data. When you hit the limit, there is no way to scale it and you must run a search query on the server
Server side search
When you cannot use client side filtering, do it on the server. This will vastly depend on your engine. A relational database would offer an indexed column, full-text search index and similar. A NoSQL database would offer indexes (as well), secondary indexes, wide rows, full text search fields and similar.
You can ask another question including the stack you using. I would advice to stop using client side search and look for scalable server side option, as it will work on 1 MB, 1 GB, 1 TB and even on 1PB scale (though with a lot more efforts).