我有一个问题,在一个超过200.000条记录的桌子上执行过程很慢。C#executioncalar真的很慢在大桌子上
如果表中存在的VARCHAR,并返回一个计数,看看是否有任何可以找到我使用的检查方法:
public static bool AlreadyQueued(string url)
{
using (SqlConnection connection = new SqlConnection(_connectionString))
{
SqlCommand cmd = new SqlCommand("SELECT Count(queueID) from PriorityQueue where absolute_url = @url")
{
Connection = connection,
CommandType = CommandType.Text
};
cmd.Parameters.AddWithValue("@url", url);
connection.Open();
var count = (int)cmd.ExecuteScalar();
return count > 0;
}
}
我的表是建立这样的:
CREATE TABLE PriorityQueue
(
queueID int IDENTITY(1,1) PRIMARY KEY,
absolute_url varchar (900),
depth int,
priorty int
);
是有没有办法让我的C#方法更快,还是我需要改变我的表中的东西?
尝试在桌子上 – Praveen
这并不是说你的方法是缓慢增加的网址列的索引。这是你的问题需要很长时间。您可以在'absolute_url'上添加索引以使其更快一些,但是对于大型表格,它需要时间。 –
此外,如果你重复使用这个查询很多不同的URL,最好使用Add方法来定义你的参数。 Add方法允许您指定参数的类型和大小。特别是使用Size属性(= 100)可以帮助数据库引擎优化器重用查询计划并加快数据库方面的速度。 – Steve