场景是目前有个Mongo的collection中的name字段,name字段长度正常在4-10个中文左右,25W数据量。如果我用startswith匹配name查询的话性能会有怎样的压力呢?
如果给name字段加上全文索引又会有什么样的好处和坏处呢?
怪我咯2017-04-18 09:40:12
共通のインデックスがある場合、固定プレフィックスを持つクエリはそのインデックスを使用できます。しかし、あなたが話しているstartswithメソッドが何であるかはわかりません。それがドライバー内にある場合、それはドライバーとそのドキュメントの内容によって異なります。私が参照しているプレフィックスは、^
などの
実行計画を見ると、IX_SCAN
:
全文インデックスは別のものです。簡単に言えば、プレフィックスが固定であるかどうかを考慮する必要はありませんが、全文インデックスの基本単位は単語ではなく 词
です。したがって、次の段落は次のとおりです:
1部は良い学校です
検索する場合、次のような必要な単語を直接見つけることができます。
リーリーただし、「学校」を直接検索しても見つからない場合があります:
リーリーもちろん、これはさまざまな単語分割エンジンがどのように分割されるかに関係しています。この例は、全文インデックス作成の制限を説明するためのものです。
さらに、冠詞、数量詞、および「性格」など、実際の意味を持たないその他の単語も除外されます:
さらに、コレクションにはフルテキスト インデックスが 1 つしか存在できないため、上記のクエリでは name
フィールドがまったく言及されていないことにも気づくでしょう。