私は約236000語の完全な辞書を持っています。
テキストファイルのすべての単語をSQLサーバーDBとMongoDbに挿入し、単語フィールドの両方のDBのインデックスを確保しました。
すべてのmongoドキュメントをループして、各単語をC#の辞書に挿入します。2.5秒かかります。時々少し少ない時々少し多い。
テキストファイル内のすべての単語をループして、C#の辞書に挿入します。0.9秒かかります。時々少し少ない時々少し多い。
SQL DB内のすべての単語をループして、C#の辞書に単語を挿入します。1.1秒かかります。時々少し少ない時々少し多い。
MongoDBをもっと速くする必要がありますか?
MongoDB:
var connectionString = "mongodb://localhost";
var client = new MongoClient(connectionString);
var server = client.GetServer();
var database = server.GetDatabase("test");
var collection = database.GetCollection<Entity>("entities");
var cursor = collection.FindAll();
foreach (Entity book in cursor)
{
string name = book.Name;
string a = Alphabetize(name);
string value;
if (dictionary.TryGetValue(a, out value))//http://www.dotnetperls.com/anagram
{
dictionary[a] = value + " " + name;
}
else
{
dictionary.Add(a, name);
}
}
「本」と「名前」と書かれているのは無視してください。まだ変更していません。
SQLサーバー:
connection.ConnectionString = ConnectionStrings.connectionString1;
using (connection)
using (SqlCommand command = new SqlCommand())
{
command.Connection = connection;
command.CommandText = "SELECT Word FROM Dictionary";
if (connection.State != ConnectionState.Open) connection.Open();
using (SqlDataReader sqlReader = command.ExecuteReader())
{
while (sqlReader.Read())
{
string line = sqlReader.GetString(0);
// Alphabetize the line for the key
// Then add to the value string
string a = Alphabetize(line);
string value;
if (dictionary.TryGetValue(a, out value))//http://www.dotnetperls.com/anagram
{
dictionary[a] = value + " " + line;
}
else
{
dictionary.Add(a, line);
}
}
}}
SQLサーバーがMongoDBよりも高速に実行され、テキストファイルアプローチが両方よりも高速に実行されるたびに。
ただし、mongoの場合、すべての単語の挿入が高速であることに気付きましたが、それは私が探していることではありません。
mongoのコレクションをループするより速い方法はありますか?
特定の単語のテキストファイルのクエリは明らかに非常に遅くなりますが、mongoとSQLのパフォーマンスの違いはそれほど重要ではありませんでした。0.0450026-mongoを使用しているようです。通常、SQlサーバーを使用すると0.0480027っぽくなります
このモンゴループで何か違うことをしませんか?SQLサーバーより2倍以上遅い...