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

时间:2013-10-07 23:59:06

标签: php mysql sql

是否可以暂时将查询中的特定值缓存到具有1000多个结果和不同值的mysql,尽管有些重复?...

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

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不会超载子查询,因为我有一个超过三百万行的表(“成员”)。

1 个答案:

答案 0 :(得分:2)

我的回答不是关于在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数组来存储国家/地区名称作为密钥。防爆。 $countryNames

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

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

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

您仍然可以在数据库中拥有countries表。这是因为加入国家/地区表可能会更合适。如果你走这条路,你需要考虑一个是主人,并在有任何增加/修改时同步另一个。

希望这很有用。