调优2条sql的存储过程,请高手出招SQL 1:USE [db_pageonline]
GODECLARE @return_value int,
@ItemCount intEXEC @return_value = [dbo].[GetPaged]
@PageSize = 20,
@CurrentPage = 1,
@ZDName = N' distinct a.name,a.addr,a.publ_id,a.tel,a.adtype,a.liststyle,b.rate/b.rate_amount as rate,a.AD_WORD_AD_ALIAS,a.AD_FILE_NAME,om.username as publ_username,om.orderAmount,om.website',
@TableName = N'publication a left join publext b on a.publ_id=b.publ_id left join orderform om on om.id=a.orderid',
@countFrom = N'publication a left join orderform om on a.orderid = om.id',
@Where = N' where a.PROD_ID=''745'' and a.po_ad_type_id = ''1000'' and a.publ_class_id in (select publ_class_id from PUBLICATION_CLASSIFICATION where name like ''%广告%'') or om.bizkeywords like ''%广告%'' or om.selectedProducts like ''%广告%'' or om.selectedServices like ''%广告%'' or om.selectedBrands like ''%广告%'' or om.promotext like ''%广告%'' or om.additionInfo like ''%广告%'' or a.addr like ''%广告%'' or a.TEL like ''%广告%''',
@PrimaryKey = N'om.orderAmount desc',
@ItemCount = @ItemCount OUTPUTSELECT @ItemCount as N'@ItemCount'SELECT 'Return Value' = @return_valueGO
SQL 2:USE [db_pageonline]
GO
/****** 对象: StoredProcedure [dbo].[GetPaged] 脚本日期: 04/21/2007 12:00:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[GetPaged] 
@PageSize int,
@CurrentPage int,
@ZDName Varchar(8000),
@TableName Varchar(8000),
@countFrom Varchar(8000),
@Where Varchar(8000),
@PrimaryKey Varchar(8000),
@ItemCount int output
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;Declare @UpperBand int, @LowerBand int, @CountSQL nVarchar(4000), @tempSQL Varchar(4000);-- Get The Count Of The Rows That They Meet the Criteria
select @CountSQL = 'SELECT @ItemCount=COUNT(*) FROM '+@countFrom+@Where;exec sp_executesql @CountSQL,N'@ItemCount int OUTPUT',@ItemCount OUTPUT-- Calculate the @LowerCount and @UpperCount
SET @LowerBand = (@CurrentPage - 1) * @PageSize;
SET @UpperBand = (@CurrentPage * @PageSize) + 1;set @tempSQL = 'WITH tempPagedRates AS (SELECT '+@ZDName+',ROW_NUMBER() OVER (order by '+@PrimaryKey+') as RowNumber FROM '+@TableName+@Where+')';
set @tempSQL = @tempSQL + 'SELECT * FROM tempPagedRates WHERE RowNumber > '+Convert(varchar(50),@LowerBand)+' AND RowNumber < '+Convert(varchar(50),@UpperBand);--print @tempSQL;
exec(@tempSQL)
END