1

我正在使用 rails 并且有以下场景:用户有多个列表,每个列表包含许多单词,每个单词都有自己的定义。列表显示视图显示以 30 的倍数分页的所有单词。我担心 b/ca 列表可能会增长到超过 4,000 个单词,如果需要订购列表,这似乎对数据库进行分页会很昂贵按字母顺序。我想知道最快的方法是什么。也许在单词上添加索引?

我考虑在列表中保存一个字符串,其中包含列表中由空格分隔的所有单词。然后我可以在这个字符串上做一个 split(" ") 并在这个数组上使用分页,但是我需要使用正则表达式来添加和删除这个列表中的单词以及一个单词对象保存。

我还考虑过某种键值对存储,例如东京内阁。看起来 B-Tree 索引可以工作。

4

1 回答 1

0

索引它!这是迄今为止最好的选择,就像 Mark Thomas 所说,它会给你任何 30 个连续的单词,就像它会给你前 30 个单词一样快。只需输入一个:order和 a :limit,你就可以开始了 -或者,更好的是,让像will_paginate这样的插件为您完成所有工作。

单词字符串是一种非常混乱的方法 - 每次添加或删除单词时都必须重新构建字符串,并且工作查找必须使用慢速比较函数,如LIKEor REGEX

东京(现在的京都)内阁可能不够通用,无法满足您的需求 - 它声称是钥匙 -> 价值存储,您可能需要多个钥匙 -> 价值,我不确定它是否支持。此外,当您已经拥有一个数据库时,为什么还要添加另一个数据库?

tl;博士索引!

希望这可以帮助!

于 2011-02-11T00:24:32.280 回答