Chr*_*ris 3 c# sql t-sql sql-server sql-server-2000
情况:c#,sql 2000
我有一张桌子,我们称之为'mytable',有3000万行.主键由字段A和B组成:
A char(16)
B smallint(2)
Run Code Online (Sandbox Code Playgroud)
当我像这样进行搜索时,它的运行速度非常慢(例如,它会执行完整的表扫描)
string a="a";
int b=1;
string sql = "select * from table(nolock) where a=@a and b=@b";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@a", a);
cmd.Parameters.AddWithValue("@b", b);
using (SqlDataReader rdr = cmd.ExecuteReader()) {...}
}
Run Code Online (Sandbox Code Playgroud)
然而,将它更改为此,并且它运行得非常快(例如,它命中索引):
string where =
String.Format("a='{0}' and b={1}", a, b);
string sql = "select * from table(nolock) where " + where;
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
using (SqlDataReader rdr = cmd.ExecuteReader()) {...}
}
Run Code Online (Sandbox Code Playgroud)
到底是怎么回事?对我来说似乎很奇怪.
| 归档时间: |
|
| 查看次数: |
948 次 |
| 最近记录: |