【发布时间】:2013-03-06 12:15:18
【问题描述】:
我已将应用程序中的性能开销缩小到此块:
Server currentServer = new Server(databaseConnection.DataSource);
Database currentDatabase = currentServer.Databases[databaseConnection.InitialCatalog];
foreach (View view in currentDatabase.Views)
{
if (view.IsSystemObject == false)
{
if (view.Name.Equals(viewName))
{
MessageBox.Show(parent, "A virtual table with that name already exists! Virtual\ntable not created.", "Not created", MessageBoxButton.OK, MessageBoxImage.Information);
break;
}
else
{
valid = true;
break;
}
}
}
我基本上想遍历不属于系统的数据库视图。但是,使用这种方法,SMO 库无论如何都会遍历所有视图。知道如何安排吗?
编辑:
例如,我只有大约 10 个用户定义的视图,但超过 1000 个系统视图。如何跳过系统视图并仅遍历用户定义的视图?
【问题讨论】:
-
这不是一个很大的性能瓶颈。你在用视图做什么......这是缓慢的部分。
-
@Hogan - 我已经添加了完整的代码。系统在这方面花费的时间太长了。
-
啊。现在我明白了。还要显示 currentDatabase.Views 的定义——我猜这是花时间查询服务器的地方
-
@Hogan - 编辑了代码。
-
@Hogan
Views这里大概是 SMO 的 Database.Views Property,它填充了数据库中所有视图的集合(不影响用户视图和系统视图)。
标签: c# .net sql sql-server database