sql语句没变,sqlserver2005下sql语句越来越慢
我有数据1000万,select的语句是这样的:selecttop1000*fromtable1wherestatus=0select出来的数据处理完之后,会将statu...
我有数据1000万,
select的语句是这样的:select top 1000 * from table1 where status=0
select 出来的数据处理完之后,会将status=1,这样表明它已经被处理过了
刚开始挺快的,sql语句执行包括数据出来总共才1秒钟
处理到300万的时候,select需要30秒才能执行完,请问是什么原因导致select执行这么慢?
建索引了,但是我用测试计划,看见并没有用索引,奇怪 展开
select的语句是这样的:select top 1000 * from table1 where status=0
select 出来的数据处理完之后,会将status=1,这样表明它已经被处理过了
刚开始挺快的,sql语句执行包括数据出来总共才1秒钟
处理到300万的时候,select需要30秒才能执行完,请问是什么原因导致select执行这么慢?
建索引了,但是我用测试计划,看见并没有用索引,奇怪 展开
7个回答
展开全部
建索引了吧!!!
索引也可以理解为这个表的一条记录。
频繁更新的表,索引事务入口不足,会造成索引失效。
所以,像你这么频繁的更新记录,需要重建索引才行。
索引也可以理解为这个表的一条记录。
频繁更新的表,索引事务入口不足,会造成索引失效。
所以,像你这么频繁的更新记录,需要重建索引才行。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
肯定是没有索引,数据库要把所有记录都看一遍才能知道谁的status是0,数据量越大越慢。在status上建索引就好了。
至于怎么建索引请自行研究。
至于怎么建索引请自行研究。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
虽然你前面top 1000 后面写的status=0 是先 status=0 然后再top 1000
那样就是全表遍历.可以写个类似分页的存储过程.一次处理一段数据.这样会快点.至于速度会变慢.可能是因为没有索引的原因.百度百科上有篇文章.很经典.一时找不到了.你要的话.说下.我以前存为txt了的。
那样就是全表遍历.可以写个类似分页的存储过程.一次处理一段数据.这样会快点.至于速度会变慢.可能是因为没有索引的原因.百度百科上有篇文章.很经典.一时找不到了.你要的话.说下.我以前存为txt了的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数据量太大了吧,最好是清掉一些数据!
如果没法清,优化下索引吧,加多一个或者建组合索引
如果没法清,优化下索引吧,加多一个或者建组合索引
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你没有建立索引,create index
索引用的是hash,为status建个索引试试吧。
索引用的是hash,为status建个索引试试吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询