gpt4 book ai didi

php - 通过执行分页、排序来减少连接表?

转载 作者:行者123 更新时间:2023-11-29 23:51:21 25 4
gpt4 key购买 nike

抱歉,这可能是一个菜鸟问题,但我不知道如何搜索这个问题。

用户案例
全站搜索功能:当用户输入关键字并提交表单时,系统应在论坛、博客、产品的标题和内容中进行搜索。所有这些类型页面的搜索结果应显示在一个带分页的列表中。用户还可以选择按相关性或新近度对结果进行排序。

我做了什么
我正在使用 LMAP。我有这三种页面类型的数据表,并且我已将标题和内容列作为索引键。
我知道连接表是一个非常糟糕的主意,所以我做了三个单独的查询来搜索论坛、博客和产品。我将所有数据放入 PHP 中,将它们放入数组中,编写一个函数来为搜索结果的每一行生成相关值。对于新近度,所有这些表中都有“updateDate”列,所以没问题。
现在我有了三个漂亮的数组。我可以轻松地对它们进行 implode() 和 sort() 操作。我还可以通过 array_slice() 渲染分页。

是什么让我皱眉
不必要的性能浪费。是的,我所做的是能够完成用户案例中的所有操作,但是 --- 我不知道该怎么做(我是初学者), --- 但我确信性能会好很多。

  1. 第一次查询后,我们需要的数据已经从数据库中获取了。但使用我的解决方案,每当用户单击搜索结果的另一页,或更改“排序依据”时,php 将重新开始,并再次执行 [sql 查询,相关函数,implode()]。我可以如何将结果数组存储在 someWhere 中,以便系统可以为下一个用户操作节省一些能量?
  2. 大多数用户不会点击搜索结果的所有页面。我猜 90% 的用户不会继续查看第 10 页,这意味着(可能是)记录的前 200 页。那么,我可以做任何事情来停止某个地方的 sql 查询而不是所有结果吗?
  3. 此外,随着流量的增长,可能会有一些关键词变得常见并重复搜索很多次,我该如何减少这些搜索的重复次数? (如果觉得我想太多请扇我耳光)

感谢您阅读这些内容,如果我的概念不正确,请纠正我,或者告诉我我是否在此用户案例中遗漏了一些需要注意的内容。谢谢您,愿上帝的爱与您同在。

编辑:我没有使用任何 php 框架。

最佳答案

要让您了解完整的故事可能就像写一本书一样。以下是一些摘录的想法:

  • 完全成熟的页面指示器会花费您额外的数据集计数 - 只需显示“下一步”按钮,可以通过选择...限制[nr_of_items_per_page+1]然后if(isset($result[nr_of_items_per_page+1])来组成) 输出下一个按钮
  • 如今的网络流量成本已不像十年前那么高,用户的需求也更高。将 nr_of_items_per_page 增加到 100、200、500(取决于每条记录的数据大小)
  • Zitty Yams 的评论很有效 - 我一次性向客户加载了超过 10000 条记录,并逐条呈现这些记录 - 它非常震撼 - 例如。 10000 个姓名(平均 10 个字符)的列表仅占 100000 字节。您在网上获得的大多数图像都比这个大。当然是有限制的......
  • 通过 $SESSION 进行 php 缓存也可以 - 但请记住,为 php 保留的每个字节不能专用于数据库(至少不能在共享服务器上)。只要不是数据库中的所有数据都适合内存,大多数情况下扩展数据库内存比增加 php 缓存或操作系统缓存更有效。

关于php - 通过执行分页、排序来减少连接表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25635229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com