如何在MySQL表中存储数据以便快速访问?

时间:2017-04-27 22:07:57

标签: mysql sql datatables database-performance sqlperformance

假设我有这个字段:

first name, last name, city, state, zip, lat, lng

我试图找到一种存储数据的方法,以便我可以执行以下查询:

  • 按名称或姓名搜索&城市
  • 按半径搜索

假设我有数百万条记录,不确定最佳选择是将它们全部放在一张表中。

我可以按州分割它们,但是在搜索时我必须做一堆连接。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

你得到的联接越多,速度越慢。如果数据需要以关系方式构建,以实现长期可维护性和可扩展性。

MySQL表不一定是您的快速搜索查询的地方。

您可以使用Hadoop + Hive MapReduce高速查询大量数据,或者甚至可以更容易实现,您可以构建一个您查询的Solr索引。

一般情况下,你不会在MySQL或任何关系数据库中实现一个非常快速的可搜索大数据集,MySQL是一个很好的关系数据库存储,并且会很快一段时间。但是,根据您的搜索和记录数量,您将需要对数据进行不同的分组和聚合,这就像Solr或NoSQL持久性/数据视图可以为您提供所需的速度。

答案 1 :(得分:0)

单个表格,带

INDEX(last_name, first_name, city)
INDEX(lat)

第一个索引处理您的第一对搜索。最后一个部分有助于按半径搜索;它可能只有一百万行就足够了。

对于更多行,“最近”需要很多more complex approach

其他一些方法只是强制搜索整个列表。 对“最近”有好处。