求解:参数化Sql查询速度变慢的原因是什么?
一个分页sql(含Like),使用查询分析器查非常快,不大于1毫秒。但用程序(相关代码在后面)访问则需要8秒左右。
之前也查资料,参数化SQL时,@参数的数据类型要指定为实际数据库数据类型,的确有很大改观,但有like的sql效率很是很慢。
TEXT字段由nvarchar(MAX)改为nvarchar(4000),似乎快了一点点,但比起查询分析内执行,还是慢了很多。
大家有没有经验可以分享呢
表T相关字段:
-----------------------
ID varchar(36)
TITLE nvarchar(500)
TEXT nvarchar(MAX)
c#查询数据库代码,用了微软的SqlHelper类
-----------------------------------------------------
String strSql = "SELECT TOP (@pageSize) ID, TITLE, TEXT FROM T WHERE (TITLE LIKE @title OR TEXT LIKE @text ) AND ID NOT IN (SELECT TOP ((@page - 1) * @pageSize) ID FROM T WHERE TITLE LIKE @title OR TEXT LIKE @text )";
SqlParameter spPageSize = new SqlParameter("@pageSize", SqlDbType.Int);
spPageSize.Value = 10;
SqlParameter spTitle = new SqlParameter("@title", SqlDbType.NVarChar);
spTitle.Value = %我的测试%;
SqlParameter spText = new SqlParameter("@text", SqlDbType.NVarChar);
spText.Value = %我的测试%;
SqlParameter spPage = new SqlParameter("@page", SqlDbType.Int);
spPage.Value = 85;
connectionString = "......"; //略
using(DbDataReader rd = SqlHelper.ExecuteReader(connectionString, CommandType.Text, strSql, spPageSize, spTitle, spText, spPage)){
//略
}