code_junkie

T-SQL Query Optimization

Nov 12th, 2011
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.73 KB | None | 0 0
  1. select
  2. path as EntryPage,
  3. count(Path) as [Count]
  4. from
  5. (
  6. /* Sub-query 1 */
  7. select
  8. pv2.path
  9. from
  10. pageviews pv2
  11. inner join
  12. (
  13. /* Sub-query 2 */
  14. select
  15. pv1.sessionid,
  16. min(pv1.created) as created
  17. from
  18. pageviews pv1
  19. inner join Sessions s1 on pv1.SessionID = s1.SessionID
  20. inner join Visitors v1 on s1.VisitorID = v1.VisitorID
  21. where
  22. pv1.Domain = isnull(@Domain, pv1.Domain) and
  23. v1.Campaign = @Campaign
  24. group by
  25. pv1.sessionid
  26. ) t1 on pv2.sessionid = t1.sessionid and pv2.created = t1.created
  27. ) t2
  28. group by
  29. Path;
  30.  
  31. select
  32. pv.Path,
  33. count(*)
  34. from
  35. PageViews pv
  36. inner join Sessions s on pv.SessionID = s.SessionID
  37. and pv.PageViewID = s.ExitPage
  38. inner join Visitors v on s.VisitorID = v.VisitorID
  39. where
  40. (
  41. @Domain is null or
  42. pv.Domain = @Domain
  43. ) and
  44. v.Campaign = @Campaign
  45. group by pv.Path;
  46.  
  47. where pv1.Domain = isnull(@Domain, pv1.Domain)
  48.  
  49. SELECT
  50. sessionid,
  51. MIN(created) AS created
  52. FROM
  53. pageviews pv
  54. JOIN
  55. visitors v ON pv.visitorid = v.visitorid
  56. WHERE
  57. v.campaign = @Campaign
  58. GROUP BY
  59. sessionid
  60.  
  61. SELECT
  62. campaignid,
  63. sessionid,
  64. pv.path
  65. FROM
  66. pageviews pv
  67. JOIN
  68. visitors v ON pv.visitorid = v.visitorid
  69. WHERE
  70. v.campaign = @Campaign
  71. AND NOT EXISTS (
  72. SELECT 1 FROM pageviews
  73. WHERE sessionid = pv.sessionid
  74. AND created < pv.created
  75. )
  76.  
  77. where
  78. (@Domain is null or pv1.Domain = @Domain) and
  79. v1.Campaign = @Campaign
  80.  
  81. create index idx2 on [PageViews]([SessionID], Domain, Created, Path)
Add Comment
Please, Sign In to add comment