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