我做了一个查重的功能 查询出来的数据结果 最多几百条 几百条这种情况也很少 一般就几条 所以我并没有用到分页 表里面的总行数也就十几万数据的样子 按理说不应该会这么慢啊
下面是我的存储过程 @where条件是 where C_Web_Name =''lily'' 我给 C_Web_Name 这个字段 建立了一个非聚集索引
ALTER proc [dbo].[CourseBywhere]
@where varchar(500)
as
declare @sql varchar(max)
set @sql = 'select id,C_Web_Name,C_Name,C_Sex,C_Age,C_Tal,C_Mobile,C_Content,C_Time,InsertPeople,C_Hun,fig,QQ,MSN,C_ID,C_FROM,C_Brand,C_area,C_cost,C_state,C_Branch,C_teachar from CRM_Course' +@where + ' order by c_time desc'
exec (@sql)
下面显示的是执行存储过程的时间
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
(162 行受影响)
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 385 毫秒。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 385 毫秒。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 385 毫秒。
上面的这个结果还能有办法优化一下吗?
我单独执行SQL语句
select id,C_Web_Name,C_Name,C_Sex,C_Age,C_Tal,C_Mobile,C_Content,C_Time,InsertPeople,C_Hun,fig,QQ,MSN,C_ID,C_FROM,C_Brand,C_area,C_cost,C_state,C_Branch,C_teachar from CRM_Course where C_Web_Name = 'lily'
下面显示时间
SQL Server 分析和编译时间:
CPU 时间 = 5 毫秒,占用时间 = 5 毫秒。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
(162 行受影响)
SQL Server 执行时间:
CPU 时间 = 16 毫秒,占用时间 = 390 毫秒。
这样好像也没太大的区别吧?
谁能有办法给解决啊?急求了 谢谢。 另外说下 网站前几天查询速度都还挺快的 就昨天起突然就变的特别慢了 我也没有更新网站 是什么问题呢?
更新一下统计信息,不知道你的表的变更情况怎么样,有可能统计信息不准,生成了错误的执行计划。
执行计划缓存也需要清空一下。
最好看一下实际查询的执行计划。
c_time 需要非聚集索引!