PHP MySQL : Select from same table multiple times without database load for each query?

标签 php mysql sql performance select

我会先尝试描述我的情况和问题,然后再提出问题。

情况和问题描述

所以我正在使用 phpBB 论坛并为其编程。我想自己编写一些代码,我需要在数据库上运行多个选择查询来检查一些事情。其中一些有点复杂,会有一百多个语句,所以我不想减慢我的网站速度。我想在后台通过 Ajax 异步检查这些选择,并将结果存储在缓存表中以供检索。这不是大问题。

我想到的是所有这些查询的数据库负载原因。如果有 100 个用户连接并且定期运行超过 100 个查询,那就非常庞大了。我不知道对性能的影响,但我不想冒险。 其中许多查询只是使用不同 WHERE 子句从同一个表中进行 SELECT。所以我考虑是否可以在没有任何参数的情况下只选择整个表一次,并且该表上的每个选择查询都将仅访问该表的缓存版本。 这也会导致更一致的结果,因为所有选择都使用相同的值。 我知道可以将查询存储在二维 php 数组中,但是我将丢失我需要的所有很酷的 MySQL 函数和子句,这将需要更多工作。

所以,文字很多,希望您能阅读._。 现在我的问题是:

问题

是否可以缓存 MySQL 表一次,并在同一个 php 文档调用中为每个后续查询使用此缓存? 它会节省性能吗?



编辑://
我想我应该多解释一下,这样就不会误解我想要做什么。为了简化问题,假设我想制作类似的东西,例如 stackoverflow 上的徽章。因此,如果用户加载该网站,我需要检查他是否获得了一些新徽章,是否满足标准等。我经常使用同一个表进行此检查。这就是为什么我想问是否可以缓存表的问题。

为什么我检查网站负载,而不检查用户是否执行了他将获得徽章的操作?原因有两个:首先,许多徽章是在一段时间后或其他用户执行操作(而不是您自己)后获得的。而且,在 phpBB 的所有文件中需要的地方添加超过 100 个查询是非常困惑和复杂的,而且也很难管理。我认为这将是一个糟糕的设计。所以我想对我的代码进行分组并封装它。

最佳答案

我希望您使用 MySQL 作为数据库系统。

您可以在 Select 中使用 SQL_CACHE ,其余部分将自动工作。 (http://dev.mysql.com/doc/refman/5.1/en/query-cache-in-select.html)

The query cache stores the text of a SELECT statement together with the corresponding result that was sent to the client. If an identical statement is received later, the server retrieves the results from the query cache rather than parsing and executing the statement again. The query cache is shared among sessions, so a result set generated by one client can be sent in response to the same query issued by another client.

The query cache can be useful in an environment where you have tables that do not change very often and for which the server receives many identical queries. This is a typical situation for many Web servers that generate many dynamic pages based on database content.

关于PHP MySQL : Select from same table multiple times without database load for each query?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22171161/

相关文章:

php - MySQL 连接 2 个不匹配的查询

mysql - 在 serializers.IntegerField(validators=...) 中解析多个参数值

php - 使用 PHP/MySQL 调度脚本 - 逻辑帮助

php - SQL语法接近,没有正确使用

php - SQL JOIN 返回 3 个名称为 'id' 的字段

mysql - sql在按其他列分组后选择并显示一列的所有值

php - 我可以在 PHP 中混合使用 MySQL API 吗?

php - 从子文件夹中的 codeigniter 中删除 index.php

php - WordPress 如何仅向订阅者授予对页面的访问权限

java - Android应用程序不幸停止(数据库连接)