是否可以临时缓存对 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/