我有大约 236000 个单词的完整词典。
我将文本文件中的所有单词插入到 SQL 服务器 DB 和 MongoDb 中,确保在单词字段上的两个 DB 上都有索引。
我遍历所有 mongo 文档,将每个单词插入 C# 中的 Dictionary 需要 2.5 秒。有时略少有时略多。
我循环遍历文本文件中的所有单词,将它们插入到 C# 中的字典中,这需要 0.9 秒。有时略少有时略多。
我遍历 SQL DB 中的所有单词,将单词插入 C# 中的 Dictionary 需要 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-ish 使用 mongo。使用 SQl 服务器通常更快 0.0480027-ish
我应该用这个 mongo 循环做一些不同的事情吗?它比 SQL 服务器慢 2 倍以上...