ALTER PROCEDURE FindeAllOrderCompanyNO
@companyNO varchar(50),
@supplierNO varchar(50),
@settlement int,
@endDateTime datetime,
@sign bit,
@ticketingTime datetime
AS
declare @sql varchar(max)
SET NOCOUNT ON;
set @sql =' select * from vw_tickDetail_tickorders_tickAirLines where CompanyNO in (select CompanyNO from TicketOrders GROUP by CompanyNO) and GetTicketTime<'''+cast(@endDateTime as varchar(20))+''' and GetTicketTime>='''+cast(@ticketingTime as varchar(20))+''' and GetTicketSign='''+cast(@sign as varchar(20))+''' '
if @companyNO is not null and @companyNO!=''
set @sql +=' and CompanyNO ='''+@companyNO+''''
if @supplierNO is not null and @supplierNO!=''
set @sql +=' and tickDetailSupplierNO='''+@supplierNO+''''
if @settlement !='' and @settlement >-1
set @sql +=' and SettlementStatus='+@settlement+''
print @sql
exec (@sql)
RETURN各位大侠,,怎么修改才能使这个存储过程 提高查询效率
================================
所有关联的表的 CompanyNO 字段都要建立索引。
select CompanyNO from TicketOrders GROUP by CompanyNO 单独出来
把结果拼接字符串
改为CompanyNO in (拼接的字符串) 这样就能利用到索引,性能提升数十倍。where 、Group by 、order by 的字段都要建立索引,一般由后往前,具体自己把握。