Ancestry Tree Gem:通过外键确定记录以提高性能?

时间:2014-05-21 17:00:59

标签: postgresql ruby-on-rails-4 ancestry

我正在使用红宝石宝石Ancestry(https://github.com/stefankroes/ancestry)来模拟推荐朋友"向前付款"类似结构。

在我的表中,我创建了许多不同的树,对于外键,event_id是唯一的。每个event_id都有一个根节点,然后是该节点的后代。

我目前有索引:

add_index :promoters, :ancestry
add_index :promoters, :event_id

简单。

查询变得非常慢......超过350毫秒来查询第一个子级节点。

我想知道是否最好创建一个新的索引,比如,

add_index :promoters, [:event_id, :ancestry]

我的理解是,这可以大大加快LIKE查询的速度,因为它可以先将表格减少到event_id的记录。

数据库是Herg上的Postgres,Rails 4.1。

谢谢,如果有其他选择/更好的方法,请提出建议。

编辑:添加有关LIKE查询的更多信息

查询第一级节点:

ancestry = '22333433'

查询节点的所有后代(间接):

ancestry LIKE '22333433/%'

gem基本上将节点的路径存储为字符串,将节点的id分隔为带有' /'

的节点

0 个答案:

没有答案
相关问题