php - 关于存储/检索复杂页面数据的问题

标签 php mysql json

  1. 我的堆栈是 php 和 mysql。
  2. 我正在尝试设计一个页面来显示共同基金的详细信息。
  3. 单个基金的数据分布在 15-20 个不同的表格中。
  4. 目前,我的前端是一个强力 PHP 页面,它使用单个方案的 8 个不同查询来查询/连接这些表。它很困惑而且性能很差。

我正在考虑替代方案。好处是数据每天只改变一次,所以我可以做一些预处理。

我正在考虑的一个选项是为每个基金(大约 2000 个基金)创建运行这些查询,并为每个基金创建一个复杂的 json 对象,将其存储在为基金代码建立索引的 mysql 中,在运行时检索 json并显示数据。我正在考虑使用简单的 json_object() mysql 函数来创建 json,并在 php 中使用 json_decode 来获取要显示的值。这是一个好方法吗?

我很想将它们存储在单独的 MongoDB 存储中 - 这会不会太过分了?

还有其他建议吗?

非常感谢!

最佳答案

为了实现快速网页浏览的目标,您的通宵运行方法非常好。您可以使用提取的数据甚至预渲染的 HTML 页面生成 JSON 对象,并存储它们。

您当然可以在 MySQL 列中存储 JSON 对象。如果您不需要数据库服务器来搜索对象,只需使用 TEXT(或 LONGTEXT)数据类型来存储它们。

按照我的想法,在操作中添加一种新型服务器(mongodb)来存储几千个 JSON 对象似乎不值得这么麻烦。但是,如果您发现有必要搜索 JSON 对象的内容,那么另一种类型的服务器可能会很有用。

其他需要考虑的事情:

  1. 优化您的 SQL 查询。阅读:https://use-the-index-luke.com以及其他有用信息的来源。从最慢的查询开始,逐一考虑您的查询。使用EXPLAIN甚至是EXPLAIN ANALYZE命令让 MySQL 服务器告诉您它如何计划每个查询。并明智地添加索引。使用在 StackOverflow 上标记此处,您可以获得帮助。许多查询可以通过向 MySQL 添加索引来优化,而无需更改 php 代码或数据中的任何内容。因此,这可能是一个正在进行的项目,而不是一个大型的新软件版本。

  2. 考虑衡量您的查询时间。您可以使用MySQL's slow query log来做到这一点。这样做的目的是确定特定时间段内“脏打”最慢的查询。然后,请参阅第一步。

  3. 让您的页面逐渐填满,让您的用户在您获取他们需要的数据时忙于阅读。将顶级内容(基金名称等)放入服务器端 HTML 中,以便搜索引擎可以看到它。使用某种前端技术(可能是 React,或者 Datatablesfetch data via AJAX )在客户端渲染页面,并在服务器上提供 REST 端点以获取每个数据 block 的 JSON 格式的数据在页面中。

  4. 在你的夜间运行中创建一个 sitemap file以及您的 JSON 数据行。这使您可以准确控制搜索引擎呈现数据的方式。

关于php - 关于存储/检索复杂页面数据的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69349430/

相关文章:

php - 需要在我的网站上显示带有特定标签的 flickr 图片

php - 允许虚荣 URL 和 session 的单个 .htaccess 文件

c# - 使用 C# 在 Web API 中使用调度程序

c# - 处理从 MySQL 和 C# 返回的数据的好方法是什么?

php - 从通过 AJAX 检索的对象设置文本字段值

php - 多次运行 MySQL INSERT 查询(将值插入多个表)

php - 无法限制 PHP 的 cURL 函数的下载大小

python - MySQL、Python : SELECT WHERE LIKE Query

c# - 如何验证 JObject 是否属于特定类型

java - 如何在事件处理程序和回调中处理版本化对象