同样的Sql语句直接在查询分析器中执行和写成存储过程后调用执行时间天壤之别 ??

一个稍微复杂一点的复合 select 查询语句,因需要参数,因此写成存储过程。

但经测试,
直接在查询分析器中执行只要几秒钟,
写成存储过程后,在查询分析器中调用却几分钟都没有出来???

请问这是什么原因啊 ???

---------------------------------------------------------------

有这种可能,索引的问题.
---------------------------------------------------------------

把你的存储过程贴出来把
---------------------------------------------------------------

"查询所用到的条件都单独建了索引,且每个表都有主键"

这只能表明你的表中建立了索引,并不表明存储过程会用上索引(是否引用索引,是sql自行决定的,除非你强制指定索引)

你可以试试在存储过程的语句中强制指定索引.

--例如下面的
create table tb (a int)
create index idx_tb_a on tb(a)
go

select * from tb with(index(idx_tb_a)) --强制使用索引 idx_tb_a
go

drop table tb

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus