我该如何打开新窗户?我目前正在做以下事情.
EventArgs的:
public class GenericViewRequestedEventArgs : EventArgs
{
public GenericViewModel ViewModel { get; private set; }
public GenericViewRequestedEventArgs(GenericViewModel viewModel)
{
ViewModel = viewModel;
}
}
Run Code Online (Sandbox Code Playgroud)
视图模型:
public class MainWindowViewModel : ViewModelBase
{
private RelayCommand _viewSpecificCommand;
public ICommand ViewSpecificCommand
{
get
{
if (_viewSpecificCommand == null)
_viewSpecificCommand = new RelayCommand(x => viewSpecific());
return _viewSpecificCommand;
}
}
public EventHandler<GenericViewRequestedEventArgs> GenericViewRequested;
private void RaiseGenericViewRequested(GenericViewModel viewModel)
{
var handler = GenericViewRequested;
if (handler != null)
handler(this, new GenericViewRequestedEventArgs(viewModel));
}
private void viewSpecific()
{
RaiseGenericViewRequested(_specificViewModel); …Run Code Online (Sandbox Code Playgroud) 我有一张大约有2亿行的表.该表包含许多列,但目前只有主键和非聚簇索引基于索引的datetime列.
第一个查询将在不到一秒的时间内返回零行.
SELECT *
FROM GenericTable
WHERE GenericDate > '01-01-1753' AND GenericDate <= '01-29-1753'
Run Code Online (Sandbox Code Playgroud)
此查询需要过长的时间才能返回零行,大约两分钟.
DECLARE @startDate DATETIME, @endDate DATETIME
SET @startDate = '01-01-1753'
SET @endDate = '01-29-1753'
SELECT *
FROM GenericTable
WHERE GenericDate > @startDate AND GenericDate <= @endDate
Run Code Online (Sandbox Code Playgroud)
使用包含数据的日期范围,性能会好一点吗?第一个查询将在不到一秒的时间内返回1000行,第二个查询仍需要30秒或更长时间才能返回相同的数据.
编辑:我也告诉我执行计划,第二个查询不使用索引?
第一次查询:
Select <- Nested Loops (Inner Join) - 0% <- Index Seek (NonClustered) - 0%
<- Key Lookup (Clustered) - 100%
Run Code Online (Sandbox Code Playgroud)
第二次查询:
Select <- Parallelism (Gather Streams) - 10% <- Clustered Index Scan (Clustered) - 90%
Run Code Online (Sandbox Code Playgroud)