组织地址缓存

时间:2010-03-09 10:36:21

标签: mysql database-design

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

编辑: 好吧,让我重申一下我的问题。 如果我将来需要搜索这个字符串,如何在数据库中存储长(最多512个)字符串。

3 个答案:

答案 0 :(得分:2)

如果您完全确定您的搜索字符串可以被规范化(例如:剥离所有额外的空格,强制小写等),以避免歧义,并且您需要搜索完全匹配(即您要么找到完全匹配的字符串与否,并且不需要通过子字符串,soundex,部分匹配,按其排序等进行搜索 - 这就是我如何阅读“通过这个字符串完成”)你可以考虑计算字符串的哈希码,把它在数据库和索引中。

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

可能的问题:虽然哈希码可以最大限度地减少哈希冲突的可能性,但是不能保证它们不会发生,所以你也应该管理它。

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

可以找到答案here