初学存储过程,只会加些简单的sql,看看这个存储过程还可以怎么优化一下,让性能更好
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[home]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[home]
GOCREATE PROCEDURE [dbo].[home]
AS
set nocount on
begin
select top 7 ID,nickname,Birthday,height,Province,City from [dbo].[user] where sex = '男' order by ID desc
select top 7 ID,nickname,Birthday,height,Province,City from [dbo].[user] where sex = '女' order by ID desc
select top 3 content,Pub_Datetime from [dbo].[news] order by ID desc
select ID,nickname,UserPhoto from [dbo].[user] where IsValid = 1 and IsStar = 1
select top 8 ID,nickname,Birthday,height,Province,City from [dbo].[user] where Rank >= 1 and sex = '男' order by Start_Datetime desc
select top 8 ID,nickname,Birthday,height,Province,City from [dbo].[user] where Rank >= 1 and sex = '女' order by Start_Datetime desc
select top 8 ID,title,Party_date from [dbo].[party] where IsValid = 1 order by Party_date desc
select top 8 ID,topic,Pub_Datetime from [dbo].[bbs] order by ID desc
end
GO

解决方案 »

  1.   

    select 语句是多,但返回的字节其实并不多,此处不谈服务器缓存的方法
      

  2.   

    对里面的查询语句where 后面的关键字段建立索引,速度应该会快很多~~ 
      

  3.   

    就这个存储过程来看,首先在判断存储过程有没有的时候,if exists (select * from dbo.sysobjects...这句里面把*改为1或别的任何一个数字可以提高效率.另外,根据你查询所检测字段,在较常用的字段上建立索引会更好一些.
    以上是我的看法.