我正在使用rails并具有以下场景:用户has_many列表,每个列表包含多个单词,每个单词都有自己的定义。列表显示视图显示所有以30的倍数分页的单词。我担心b / ca列表可以增长到超过4,000个单词,如果列表需要订购,这似乎是数据库分页的昂贵方式按字母顺序排列。我想知道最快的方法是什么。也许在单词上添加一个索引?
我考虑在列表中保存一个字符串,该字符串包含由空格分隔的列表中的所有单词。然后,我可以对此字符串执行拆分(“”)并在此数组上使用分页,但之后我需要使用正则表达式来添加和删除此列表中的单词以及单词对象保存。
我也考虑过像东京内阁这样的钥匙价值商店。它看起来像一个B树索引可以工作。
答案 0 :(得分:0)
索引吧!这是迄今为止最好的选择,就像马克·托马斯所说的那样,它会给你任意30个连续的单词,就像它给你的前30个单词一样快。只需输入:order
和{{1并且你很高兴 - 或者更好的是,让像will_paginate这样的插件为你做这一切。
单词字符串是一种非常混乱的方法 - 每次添加或删除单词时都必须重建字符串,而工作查找必须使用慢速比较函数,如:limit
或LIKE
东京(现在的京都)内阁可能不够多才能满足您的需求 - 它声称是一个关键 - >值存储,您可能需要多个键 - >价值,我不确定它支持。此外,为什么在你已经有一个DB时添加另一个DB?
tl; dr INDEX!
希望这有帮助!