优化我的postgres数据库,该数据库拥有超过500k的餐厅信息

时间:2014-07-19 13:39:15

标签: postgresql ruby-on-rails-4 optimization rails-activerecord large-data

我有一个纽约市所有餐厅检查数据的数据库。目前有大约520,000个条目,显然它们并非都是独一无二的。 (即餐馆多次检查后不止一次出现。)

我正在创建一个应用程序,该应用程序将使用基于成绩和邮政编码的Google地图API在地图上显示所有独特的餐馆。目前我们的搜索时间很糟糕,因为有很多记录。

关于我们可以设置的最佳哈希索引类型的任何建议,以优化我们的搜索?此外,使用最新检验数据删除所有非独特餐厅的最佳方法是什么?

数据库在带有Active Record的postgres上运行。我们的迁移如下:

    create_table :restaurants do |t|
  t.string :CAMIS
  t.string :DBA
  t.string :BORO
  t.string :BUILDING
  t.string :STREET
  t.string :ZIPCODE
  t.string :PHONE
  t.string :CUISINECODE
  t.string :INSPDATE
  t.string :ACTION
  t.string :VIOLCODE
  t.string :SCORE
  t.string :CURRENTGRADE
  t.string :GRADEDATE
  t.string :RECORDDATE

  t.timestamps
end

(请不要介意下一次迁移时的大写。)

1 个答案:

答案 0 :(得分:0)

这可能不是您寻找(或希望)的答案,但IMO,答案是提出一个良好的关系模式设计。我不完全理解你的系统,但听起来你需要一个restaurant表和一个inspection表(1:很多关系)和它们之间的外键。然后,您需要找出唯一标识餐馆的内容并创建适当的索引来强制执行该操作。