検索

ホームページ  >  に質問  >  本文

python - MongoDb startswith和全文索引问题

场景是目前有个Mongo的collection中的name字段,name字段长度正常在4-10个中文左右,25W数据量。如果我用startswith匹配name查询的话性能会有怎样的压力呢?
如果给name字段加上全文索引又会有什么样的好处和坏处呢?

PHPzPHPz2805日前903

全員に返信(1)返信します

  • 怪我咯

    怪我咯2017-04-18 09:40:12

    共通のインデックスがある場合、固定プレフィックスを持つクエリはそのインデックスを使用できます。しかし、あなたが話しているstartswithメソッドが何であるかはわかりません。それがドライバー内にある場合、それはドライバーとそのドキュメントの内容によって異なります。私が参照しているプレフィックスは、^ などの

    で始まる正規表現のマッチングです。 リーリー

    実行計画を見ると、IX_SCAN:

    がわかります。 リーリー

    全文インデックスは別のものです。簡単に言えば、プレフィックスが固定であるかどうかを考慮する必要はありませんが、全文インデックスの基本単位は単語ではなく です。したがって、次の段落は次のとおりです:

    1部は良い学校です

    検索する場合、次のような必要な単語を直接見つけることができます。

    リーリー

    ただし、「学校」を直接検索しても見つからない場合があります:

    リーリー

    もちろん、これはさまざまな単語分割エンジンがどのように分割されるかに関係しています。この例は、全文インデックス作成の制限を説明するためのものです。
    さらに、冠詞、数量詞、および「性格」など、実際の意味を持たないその他の単語も除外されます:

    リーリー

    さらに、コレクションにはフルテキスト インデックスが 1 つしか存在できないため、上記のクエリでは name フィールドがまったく言及されていないことにも気づくでしょう。

    返事
    0
  • キャンセル返事