I’ve always used the Microsoft SQL Management Studio Execution plan feature to visualize the query plan. However today I was experimenting with the SQL XML showplan statement to see if I could learn anything more about execution plans by looking more closely at the code. As soon as I saw the XML it occurred to me that I could use XSLT to convert the output to HTML similar to the way that the SQL Management studio did it. I was curious to try, but before I writing my own, I checked to see if anyone else did it already and found this on github:
So, to demonstrate I created a simple SQL using temp tables so that I could perform some very basic tests.
IF OBJECT_ID('tempdb..#header') IS NOT NULL DROP TABLE #header
IF OBJECT_ID('tempdb..#detail') IS NOT NULL DROP TABLE #detail
set nocount on
create table #header
(
 order_no int,
 name  varchar(30),
 email varchar(255),
)
 create table #detail
(
 order_no int,
 item  varchar(30),
 item_code  varchar(30)
 )
 Insert some sample data
insert into #header (order_no,name,email) values (121,'Joe Blogs','j.bloggs@bar.com') insert into #header (order_no,name,email) values (122,'Bill Smith','B.Smith@foo.com') insert into #detail (order_no,item,item_code) values (121,'Item 1','IT-001') insert into #detail (order_no,item,item_code) values (121,'Item 1','IT-002') insert into #detail (order_no,item,item_code) values (121,'Item 1','EV-003') insert into #detail (order_no,item,item_code) values (122,'Item 1','IT-001') insert into #detail (order_no,item,item_code) values (122,'Item 2','IT-002') insert into #detail (order_no,item,item_code) values (122,'Item 3','IT-003')
Turn on the SHOWPLAN_XML in SQL and run query to produce the XML.
SET SHOWPLAN_XML ON;
go
 SELECT
      h.order_no
    , h.name
    , h.email
    , d.item
    , d.item_code
FROM #header h
JOIN #detail AS d ON h.order_no = d.order_no
WHERE NOT EXISTS (
      SELECT NULL
      FROM #detail od
      WHERE od.item_code = 'EV-003'
      AND h.order_no = od.order_no
      )
GO
SET SHOWPLAN_XML Off;
GO Then copy and paste the output XML data into a file and upload to the demo page that uses Justins HTML query plan visualizer library.

