Click here to Skip to main content
15,885,546 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
SQL
Select  j.Route,
   '' as Sequence,
   '' as Territory,
   '' as Region,
   t.TruckNo as [Truck No],
   dr.DriverName as [Driver Name],
   j.Ordernumber as [Invoice],
   j.CustomerName as [Customer Name],
   CONVERT(DATE,Cast(j.Planneddate as varchar(8)),112)as [Dispatch Date],
   d.DeliveryDate as [Delivery Date],
   ps.[POD DateTime] as [POD Return Date],
   Cast(datediff(day,CONVERT(DATE,Cast(j.Planneddate as varchar(8)),112),d.DeliveryDate)as varchar(8)) as [On Time Delivery KPI],
   Cast(datediff(day,d.DeliveryDate,ps.[POD DateTime])as varchar(8)) as [On Time POD KPI]
		
		
   from tbl_pms_JobOrders j 
   
      Inner Join tbl_pms_JobOrders_Trucks_Info jt on jt.JobID=j.JobID
      Inner Join tbl_pms_Trucks t on t.TruckID=jt.TruckID
      Inner Join tbl_pms_DeliveryInfo d on d.JobID=j.JobID
      Inner Join tbl_pms_Trucks_DriversMapping td on td.TruckID = jt.TruckID
      Inner Join tbl_pms_DriverInfo dr on dr.DriverID = td.DriverID
      Inner Join dbo.tbl_pms_POD_Submit ps on ps.JobID = j.JobID
			
      Where j.WarehouseID=@WarehouseID and
      j.Planneddate between @FromDate and @ToDate
      and jt.TruckID != 312
      and d.recno in (select max (recno) from tbl_pms_DeliveryInfo 
      where JobID in (select JobID from tbl_pms_JobOrders 
      where WarehouseID=@WarehouseID) group by JobID)


This is Sql query which is taking more time to execute between dates.. Please Optimize this query..


Thanks Advance..
Posted
Updated 5-Jan-14 12:54pm
v3
Comments
Kornfeld Eliyahu Peter 2-Jan-14 2:32am    
It's almost impossible to help you out, as we do not know about your table's indexing, amount of data to move and so on...
You may run your query with actual execution plan on and see which part takes most of the time...
DevilsCod 2-Jan-14 3:27am    
and d.recno in (select max (recno) from tbl_pms_DeliveryInfo
where JobID in (select JobID from tbl_pms_JobOrders
where WarehouseID=@WarehouseID) group by JobID)

without this subquery the query is normal .. but query become slow when i add this sub query ..

As Kornfeld Eliyahu Peter had mentioned, it's almost impossible...

I would suggest to read about query performance[^]. There is few things to do to increase query execution time.
 
Share this answer
 
I don't know how I missed this question

I'd use a CTE:

SQL
 ;WITH maxrec as
 (
 select max (recno) AS maxrec from tbl_pms_DeliveryInfo di
      INNER JOIN  tbl_pms_JobOrders jo ON di.jobNo = jo.jobNo
          where jo.WarehouseID=@WarehouseID
 )

Select  j.Route,
      '' as Sequence,
      '' as Territory,
      '' as Region,
      t.TruckNo as [Truck No],
      dr.DriverName as [Driver Name],
      j.Ordernumber as [Invoice],
      j.CustomerName as [Customer Name],
      CONVERT(DATE,Cast(j.Planneddate as varchar(8)),112)as [Dispatch Date],
      d.DeliveryDate as [Delivery Date],
      ps.[POD DateTime] as [POD Return Date],
      Cast(datediff(day,CONVERT(DATE,Cast(j.Planneddate as varchar(8)),112),d.DeliveryDate)as varchar(8)) as [On Time Delivery KPI],
      Cast(datediff(day,d.DeliveryDate,ps.[POD DateTime])as varchar(8)) as [On Time POD KPI]


      from tbl_pms_JobOrders j

          Inner Join tbl_pms_JobOrders_Trucks_Info jt on jt.JobID=j.JobID
          Inner Join tbl_pms_Trucks t on t.TruckID=jt.TruckID
          Inner Join tbl_pms_DeliveryInfo d on d.JobID=j.JobID
          Inner Join tbl_pms_Trucks_DriversMapping td on td.TruckID = jt.TruckID
          Inner Join tbl_pms_DriverInfo dr on dr.DriverID = td.DriverID
          Inner Join dbo.tbl_pms_POD_Submit ps on ps.JobID = j.JobID
          INNER JOIN maxrec mr ON mr.maxrec = d.recno

          Where j.WarehouseID=@WarehouseID and
          j.Planneddate between @FromDate and @ToDate
          and jt.TruckID != 312;


This gets rid of two levels of subquery, which is what was slow.

I'd also make sure PlannedDate has an index, and WarehouseID has one, too.
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900