首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
MS-SQL Server
疑难问题
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
存储过程查询变慢。。。为什么
[无满意答案结贴,结贴人:xi_ha]
加为好友
发送私信
在线聊天
xi_ha
等级:
发表于:
2008-02-19 18:05:01
楼主
数据库是SQL2000
今天才发现问题,用存储过程查询很慢,cpu显示100%
如果把存储过程修改下,直接调用用语句很快就查询出来,
为什么?问题出在那里,我该怎么修改?
问题点数:
30
回复次数:
6
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
xi_ha
等级:
发表于:
2008-02-19 18:06:10
1
楼 得分:
0
用过程根本就查不出来现在,急啊
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zefuzhang2008
zefuzhang
等级:
发表于:
2008-02-19 18:08:00
2
楼 得分:
0
贴出代码
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
artmouse
艺术老鼠
等级:
发表于:
2008-02-19 19:26:30
3
楼 得分:
0
很有可能在于输入参数的选择性上面
假设对Name字段做了索引
where Name like 'ABC%' 和 where Name like '%ABC' 在语句中使用是完全不一样的,'ABC%'可以利用索引,存储过程编译的时候可能吧它编译成 '%ABC' 这样, 具体还是贴语句吧。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
happyflystone
无枪狙击手
等级:
发表于:
2008-02-19 21:05:11
4
楼 得分:
0
清除缓存过程的计划试试
{RECOMPILE ¦ ENCRYPTION ¦ RECOMPILE, ENCRYPTION}
RECOMPILE 表明 SQL Server 不会缓存该过程的计划,该过程将在运行时重新编译。在使用非典型值或临时值而不希望覆盖缓存在内存中的执行计划时,请使用 RECOMPILE 选项。
ENCRYPTION 表示 SQL Server 加密 syscomments 表中包含 CREATE PROCEDURE 语句文本的条目。使用 ENCRYPTION 可防止将过程作为 SQL Server 复制的一部分发布。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
xi_ha
等级:
发表于:
2008-02-20 10:40:37
5
楼 得分:
0
清除缓存过程的计划试试
怎么用啊,告诉我怎么用啊,不明白
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
kk19840210
飞天小虫
等级:
发表于:
2008-02-20 10:54:06
6
楼 得分:
0
存储过程执行时 第一次执行生成一个执行计划 以后每次执行都按照第一个存储过程的执行计划来执行 如果前后执行的语句不一样
那么就会很慢
SQL 语句执行是每次都生成一个新的执行计划的
创建存储过程时 用 create proc p_name 变量
with recompile
每次执行存储过程都生成一个新的执行计划
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
abc推荐给好友