php - 是否可以在 mysql 上缓存特定值?

标签 php mysql sql

是否可以临时缓存对 mysql 的查询中的特定值,该查询具有超过 1000 个结果和不同的值​​,尽管有些重复?...

在这里我向您展示一个想法:

SELECT
    members.name,
    members.lastname,
    use_cache_if_it_was_consulted(SELECT countries.name FROM countries WHERE countries.id = members.country LIMIT 1) AS 'country'
FROM members
WHERE
    members.enable = 1
    AND members.gender = "M"
    AND members.country IN( 1, 2, 3 , 4 , 5 , 9 , 15 , 2342 , 234 )

许多“成员”来自加拿大以外的美国,还有许多来自其他国家。

这个想法是 MySQL 不会因子查询而过载,因为我有一个包含超过 300 万行的表(“成员”)。

最佳答案

我的答案不是关于在 MySQL 中缓存一个值,而是提供其他想法,它太大了,无法放入评论:

如果您使用子查询,则可以使用 Join 代替。

SELECT
    members.name,
    members.lastname,
    countries.name
FROM
    members
    LEFT OUTER JOIN countries ON countries.id = members.country
WHERE
        members.enable = 1
    AND members.gender = 'M'
    AND members.country IN( 1, 2, 3 , 4 , 5 , 9 , 15 , 2342 , 234 )

考虑到国家/地区名称通常不会更改,您还可以使用 PHP 数组来存储以国家/地区 ID 作为键的国家/地区名称。前任。 $countryNames .

在这种情况下,您将在 SQL 中检索国家/地区 ID:

SELECT
    members.name,
    members.lastname,
    members.country

使用时,您可以将其用作$countryNames[id]

您仍然可以在数据库中拥有国家/地区表。这是因为有时加入国家表可能更合适。如果您走这条路,则需要将其中一个视为主服务器,并在有任何添加/修改时同步另一个。

希望这有用。

关于php - 是否可以在 mysql 上缓存特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19236841/

相关文章:

php - 在docker compose中打开php.ini添加扩展

mysql - Visual Studio 2013 MVC MySql 连接

php - 如果未选择任何选项,Laravel 将忽略选择输入验证

PHP更改加载页面链接样式

java - Zend Server CE 和 BIRT 与 Javabridge 集成

sql - 使用 SQL 在 Access 中对 5 个表进行内联接和左联接

sql - SQL 中的最佳 LIKE 搜索

php - Laravel 创建路线

mysql - 通过SSH将数据库表单独导出到sql文件

mysql - 在插入之前检查是否存在时出现语法错误