假设我有这个字段:
first name, last name, city, state, zip, lat, lng
我试图找到一种存储数据的方法,以便我可以执行以下查询:
假设我有数百万条记录,不确定最佳选择是将它们全部放在一张表中。
我可以按州分割它们,但是在搜索时我必须做一堆连接。
有什么想法吗?
答案 0 :(得分:0)
你得到的联接越多,速度越慢。如果数据需要以关系方式构建,以实现长期可维护性和可扩展性。
MySQL表不一定是您的快速搜索查询的地方。
您可以使用Hadoop + Hive MapReduce高速查询大量数据,或者甚至可以更容易实现,您可以构建一个您查询的Solr索引。
一般情况下,你不会在MySQL或任何关系数据库中实现一个非常快速的可搜索大数据集,MySQL是一个很好的关系数据库存储,并且会很快一段时间。但是,根据您的搜索和记录数量,您将需要对数据进行不同的分组和聚合,这就像Solr或NoSQL持久性/数据视图可以为您提供所需的速度。
答案 1 :(得分:0)
单个表格,带
INDEX(last_name, first_name, city)
INDEX(lat)
第一个索引处理您的第一对搜索。最后一个部分有助于按半径搜索;它可能只有一百万行就足够了。
对于更多行,“最近”需要很多more complex approach。
其他一些方法只是强制搜索整个列表。 不对“最近”有好处。