1

私はレールを使用しており、次のシナリオがあります。ユーザーには多数のリストがあり、各リストには多数の単語が含まれており、各単語には独自の定義があります。リスト表示ビューには、30 の倍数でページ分割されたすべての単語が表示されます。私は b/ca リストが 4,000 語以上になる可能性があることを懸念しています。アルファベット順。これを行うための最速の方法は何だろうと思っています。多分単語にインデックスを追加しますか?

スペースで区切られたリスト内のすべての単語を含むリストに文字列を保存することを検討しました。次に、この文字列に対して split(" ") を実行し、この配列に対してページネーションを使用できますが、正規表現を使用して、このリストから単語を追加および削除し、単語オブジェクトを保存する必要があります。

また、tokyo Cabinet のようなキーバリュー ストアも検討しました。B-Tree インデックスが機能するようです。

4

1 に答える 1

0

インデックスしてください!:orderこれは断然最良の選択肢であり、Mark Thomas が言ったように、最初の 30 語を与えるのと同じくらい速く、連続する 30 語を与えることができます:limit。または、できれば、 will_paginateのようなプラグインにすべて任せてください。

単語文字列はかなり厄介なアプローチです。単語を追加または削除するたびに文字列を再構築する必要があり、作業検索ではLIKEor などの遅い比較関数を使用する必要がありますREGEX

東京(現在の京都)キャビネットは、必要なものに対して十分な汎用性がない可能性があります-キー->値ストアであると主張しており、複数のキー->値が必要になる場合がありますが、サポートされているかどうかはわかりません. さらに、DB をもう 1 つ持っているのに、別の DB を追加する必要はありません。

tl;drインデックス!

お役に立てれば!

于 2011-02-11T00:24:32.280 に答える