假设我有此字段:
first name, last name, city, state, zip, lat, lng
我正在尝试找到一种存储数据的方法,以便我可以进行查询:
- 按名称或名称&城市
- radius 搜索
假设我有数百万记录,不确定最好的选择是将它们全部放在一个表中。
我可以按状态拆分它们,但是然后我必须在搜索时进行一堆连接。
有什么想法?
越大的结合越慢。如果数据需要以关系方式构造,以实现长期可维护性和可扩展性。
MySQL表不一定是您快速搜索查询的位置。
您可以用Hadoop Hive绘制用于大量数据的高速查询,或者甚至更容易实现,您可以构建您查询的SOLR索引。
通常,您将无法在MySQL或任何关系数据库中获得非常快速的大型数据集,MySQL是一个很棒的关系数据库存储,并且会很快。但是,根据您的搜索和记录数量,您需要将数据分组和汇总不同,这就是Solr或NoSQL持久性/数据视图之类的东西可以为您带来所需的速度。
单个表格,
INDEX(last_name, first_name, city)
INDEX(lat)
第一个索引处理您的第一对搜索。最后一个部分部分有助于搜索半径;它可能只有一百万行就足够了。
对于更多的行,"最近"需要更复杂的方法。
其他一些方法将简单地简单地搜索整个列表。那不是不是对"最近"。