代码之家  ›  专栏  ›  技术社区  ›  Denis Palnitsky

组织地址缓存

  •  2
  • Denis Palnitsky  · 技术社区  · 14 年前

    我需要在MySQL数据库中为地址坐标组织缓存。存储地址的最佳做法是什么?我需要压缩地址字符串还是按原样使用?

    编辑: 好吧,让我重申我的问题。 如何在数据库中存储长(最多512个)字符串,如果我以后需要按此字符串进行搜索。

    3 回复  |  直到 14 年前
        1
  •  2
  •   p.marino    14 年前

    如果您绝对确定您的搜索字符串可以规范化(例如:去掉所有多余的空格,强制小写等),以避免歧义,您需要搜索完全匹配(即,您要么找到规范化字符串,要么不需要按子字符串搜索,soundex,partial match,sort by it etc.-这就是我如何读取你的“by exactly this string”)你可以考虑计算字符串的hashcode,把它放在db中并索引它。

    如果您使用返回数字的hashcode函数,您将拥有一个非常高效的访问索引。当然,您仍然可以保留原始字符串字段,以便打印和使用不同的访问方法。

    可能的问题:虽然hashcode可以将散列冲突的可能性降到最低,但不能保证它们不会发生,所以您也应该对此进行管理。

    另外,除非你有很多地址,否则我怀疑加速增益是否值得你费心。

        2
  •  1
  •   Matthieu Napoli    14 年前

    mysql可以管理坐标并对这些值进行操作,请尝试查看 http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html

    如果你想要更简单的东西,我通常会分别存储城市代码、城市名称和地址字符串的其余部分。然后我可以索引和搜索这些字段(一个接一个,或组合)。

    如果您想简单地使用坐标,只需存储纬度/经度并进行基本比较

        3
  •  0
  •   Community Navdeep Singh    7 年前

    可以找到答案 here