<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Strate SQL &#187; Performance Tuning</title>
	<atom:link href="http://www.jasonstrate.com/index.php/tag/performance-tuning/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jasonstrate.com</link>
	<description>Questions, answers, opinions and scripts from a SQL Server DBA</description>
	<lastBuildDate>Tue, 31 Aug 2010 02:56:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Webcast Today &#8211; Using XML to Query Execution Plans</title>
		<link>http://www.jasonstrate.com/index.php/2010/07/webcast-today-using-xml-to-query-execution-plans/</link>
		<comments>http://www.jasonstrate.com/index.php/2010/07/webcast-today-using-xml-to-query-execution-plans/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 14:00:00 +0000</pubDate>
		<dc:creator>jstrate</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[PASS]]></category>
		<category><![CDATA[Performance Tuning]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>

		<guid isPermaLink="false">http://www.jasonstrate.com/index.php/2010/07/webcast-today-using-xml-to-query-execution-plans/</guid>
		<description><![CDATA[I’ll be speaking for the SQL PASS Database Administration Virtual Chapter today at 12 PM Eastern time.  The topic will be Using XML to Query Execution Plans.  The abstract for the event is the following:
SQL Server stores its execution plans as XML in dynamic management views. The execution plans are a gold mine of information. [...]


Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2010/07/webcast-next-week-using-xml-to-query-execution-plans/' rel='bookmark' title='Permanent Link: Webcast Next Week &#8211; Using XML to Query Execution Plans'>Webcast Next Week &#8211; Using XML to Query Execution Plans</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/06/webcast-next-week-performance-impacts-related-to-different-function-types/' rel='bookmark' title='Permanent Link: Webcast Next Week &#8211; Performance Impacts Related to Different Function Types'>Webcast Next Week &#8211; Performance Impacts Related to Different Function Types</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/07/webcast-today-performance-impacts-related-to-different-function-types/' rel='bookmark' title='Permanent Link: Webcast Today &#8211; Performance Impacts Related to Different Function Types'>Webcast Today &#8211; Performance Impacts Related to Different Function Types</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F07%2Fwebcast-today-using-xml-to-query-execution-plans%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F07%2Fwebcast-today-using-xml-to-query-execution-plans%2F" height="61" width="51" /></a></div><p>I’ll be speaking for the <a href="http://www.sqlpass.org/">SQL PASS</a> <a href="http://dba.sqlpass.org/">Database Administration Virtual Chapter</a> today at 12 PM Eastern time.  The topic will be <a href="http://www.sqlpass.org/Events/ctl/ViewEvent/mid/521.aspx?ID=434">Using XML to Query Execution Plans</a>.  The abstract for the event is the following:</p>
<blockquote><p>SQL Server stores its execution plans as XML in dynamic management views. The execution plans are a gold mine of information. From the whether or not the execution plan will rely on parallelism to what columns are requiring a key lookup after a non-clustered index seek. Through a the use of XML this information can be available at your fingertips to help determine the value and impact of an index and guide you in improving the performance of your SQL Server databases. In this session we&#8217;ll look at how you can begin to understand and query the structure of the execution plans in the procedure cache. Also, we&#8217;ll review how to uncover some potential performance issues that may be lurking in your SQL Server.</p></blockquote>
<p>You can get to the event <a href="http://www.sqlpass.org/Events/ctl/ViewEvent/mid/521.aspx?ID=434">here</a>.</p>


<p>Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2010/07/webcast-next-week-using-xml-to-query-execution-plans/' rel='bookmark' title='Permanent Link: Webcast Next Week &#8211; Using XML to Query Execution Plans'>Webcast Next Week &#8211; Using XML to Query Execution Plans</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/06/webcast-next-week-performance-impacts-related-to-different-function-types/' rel='bookmark' title='Permanent Link: Webcast Next Week &#8211; Performance Impacts Related to Different Function Types'>Webcast Next Week &#8211; Performance Impacts Related to Different Function Types</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/07/webcast-today-performance-impacts-related-to-different-function-types/' rel='bookmark' title='Permanent Link: Webcast Today &#8211; Performance Impacts Related to Different Function Types'>Webcast Today &#8211; Performance Impacts Related to Different Function Types</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.jasonstrate.com/index.php/2010/07/webcast-today-using-xml-to-query-execution-plans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Webcast Next Week &#8211; Using XML to Query Execution Plans</title>
		<link>http://www.jasonstrate.com/index.php/2010/07/webcast-next-week-using-xml-to-query-execution-plans/</link>
		<comments>http://www.jasonstrate.com/index.php/2010/07/webcast-next-week-using-xml-to-query-execution-plans/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 14:00:00 +0000</pubDate>
		<dc:creator>jstrate</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[PASS]]></category>
		<category><![CDATA[Performance Tuning]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[SQLServerSyndication]]></category>

		<guid isPermaLink="false">http://www.jasonstrate.com/index.php/2010/07/webcast-next-week-using-xml-to-query-execution-plans/</guid>
		<description><![CDATA[I’ll be speaking for the SQL PASS Database Administration Virtual Chapter next week.  It’ll be on July 28 at 12 PM Eastern time.  The topic will be Using XML to Query Execution Plans.  The abstract for the event is the following:
SQL Server stores its execution plans as XML in dynamic management views. The execution plans [...]


Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2010/07/webcast-today-using-xml-to-query-execution-plans/' rel='bookmark' title='Permanent Link: Webcast Today &#8211; Using XML to Query Execution Plans'>Webcast Today &#8211; Using XML to Query Execution Plans</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/06/webcast-next-week-performance-impacts-related-to-different-function-types/' rel='bookmark' title='Permanent Link: Webcast Next Week &#8211; Performance Impacts Related to Different Function Types'>Webcast Next Week &#8211; Performance Impacts Related to Different Function Types</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/07/webcast-today-performance-impacts-related-to-different-function-types/' rel='bookmark' title='Permanent Link: Webcast Today &#8211; Performance Impacts Related to Different Function Types'>Webcast Today &#8211; Performance Impacts Related to Different Function Types</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F07%2Fwebcast-next-week-using-xml-to-query-execution-plans%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F07%2Fwebcast-next-week-using-xml-to-query-execution-plans%2F" height="61" width="51" /></a></div><p>I’ll be speaking for the <a href="http://www.sqlpass.org/">SQL PASS</a> <a href="http://dba.sqlpass.org/">Database Administration Virtual Chapter</a> next week.  It’ll be on July 28 at 12 PM Eastern time.  The topic will be <a href="http://www.sqlpass.org/Events/ctl/ViewEvent/mid/521.aspx?ID=434">Using XML to Query Execution Plans</a>.  The abstract for the event is the following:</p>
<blockquote><p>SQL Server stores its execution plans as XML in dynamic management views. The execution plans are a gold mine of information. From the whether or not the execution plan will rely on parallelism to what columns are requiring a key lookup after a non-clustered index seek. Through a the use of XML this information can be available at your fingertips to help determine the value and impact of an index and guide you in improving the performance of your SQL Server databases. In this session we&#8217;ll look at how you can begin to understand and query the structure of the execution plans in the procedure cache. Also, we&#8217;ll review how to uncover some potential performance issues that may be lurking in your SQL Server.</p></blockquote>
<p>If you register for the event ahead of time you will be entered into a drawing brought to us from CA, our event sponsor.  You can get to the event <a href="http://www.sqlpass.org/Events/ctl/ViewEvent/mid/521.aspx?ID=434">here</a>.</p>


<p>Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2010/07/webcast-today-using-xml-to-query-execution-plans/' rel='bookmark' title='Permanent Link: Webcast Today &#8211; Using XML to Query Execution Plans'>Webcast Today &#8211; Using XML to Query Execution Plans</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/06/webcast-next-week-performance-impacts-related-to-different-function-types/' rel='bookmark' title='Permanent Link: Webcast Next Week &#8211; Performance Impacts Related to Different Function Types'>Webcast Next Week &#8211; Performance Impacts Related to Different Function Types</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/07/webcast-today-performance-impacts-related-to-different-function-types/' rel='bookmark' title='Permanent Link: Webcast Today &#8211; Performance Impacts Related to Different Function Types'>Webcast Today &#8211; Performance Impacts Related to Different Function Types</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.jasonstrate.com/index.php/2010/07/webcast-next-week-using-xml-to-query-execution-plans/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PASSMN July Meeting Today</title>
		<link>http://www.jasonstrate.com/index.php/2010/07/passmn-july-meeting-today/</link>
		<comments>http://www.jasonstrate.com/index.php/2010/07/passmn-july-meeting-today/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 14:00:00 +0000</pubDate>
		<dc:creator>jstrate</dc:creator>
				<category><![CDATA[PASSMN]]></category>
		<category><![CDATA[Performance Tuning]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQLServerSyndication]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://www.jasonstrate.com/index.php/2010/07/passmn-july-meeting-today/</guid>
		<description><![CDATA[
Don’t forget the July PASSMN meeting is today.&#160; We have Itzik Ben-Gan (blog) coming in to talk about some query tuning tips.
Here are the meeting details…
Date and&#160; Time:
July 20, 2010, 5:00 PM CST
Location: 
8300 Norman Center Drive, 9th Floor, Bloomington, MN&#160; 55437 (map)
Live Meeting

URL: https://www.livemeeting.com/cc/usergroups/join?id=7DGRT6&#38;role=attend&#38;pw=h*ZR%248%25%2Fd 
Meeting ID: 7DGRT6 
Entry Code: h*ZR$8%/d

Agenda:

5:00 –5:15 : Announcements  [...]


Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2010/07/passmn-july-meeting-next-week/' rel='bookmark' title='Permanent Link: PASSMN July Meeting Next Week'>PASSMN July Meeting Next Week</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/06/july-passmn-meeting-announced/' rel='bookmark' title='Permanent Link: July PASSMN Meeting Announced'>July PASSMN Meeting Announced</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2009/07/july-passmn-meeting-next-week-july-14/' rel='bookmark' title='Permanent Link: July PASSMN Meeting Next Week (July 14)'>July PASSMN Meeting Next Week (July 14)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F07%2Fpassmn-july-meeting-today%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F07%2Fpassmn-july-meeting-today%2F" height="61" width="51" /></a></div><p><a href="http://minnesota.sqlpass.org"><img style="display: inline; margin-left: 0px; margin-right: 0px" alt="Minnesota SQL Server Users Group" align="right" src="http://minnesota.sqlpass.org/Portals/61/logo.gif" width="177" height="71" /></a></p>
<p>Don’t forget the July PASSMN meeting is today.&#160; We have Itzik Ben-Gan (<a href="http://blogs.solidq.com/ibengan/Home.aspx">blog</a>) coming in to talk about some query tuning tips.</p>
<p>Here are the meeting details…</p>
<blockquote><p><strong>Date and&#160; Time:</strong></p>
<p>July 20, 2010, 5:00 PM CST</p>
<p><b>Location: </b></p>
<p>8300 Norman Center Drive, 9th Floor, Bloomington, MN&#160; 55437 (<a href="http://www.bing.com/maps/OneClickDirections.aspx?rtp=%7epos.rg82g976mkjn_8300+Norman+Center+Dr%2c+Bloomington%2c+MN+55437-1027___a_&amp;rsd=44.875722527504_-93.3967977762222__the+north+(on+US-169+S)%7e44.8308277130127_-93.2932215929031__the+south+(on+I-35W+N)%7e44.8620003461838_-93.2855504751205__the+east+(on+I-494+W+%2f+SR-5+W)%7e44.8592001199722_-93.4069204330444__the+west+(on+I-494+E+%2f+SR-5+E)&amp;mkt=en-us&amp;FORM=LLMP">map</a>)</p>
<p><b>Live Meeting</b></p>
<ul>
<li>URL: <a href="https://www.livemeeting.com/cc/usergroups/join?id=7DGRT6&amp;role=attend&amp;pw=h*ZR%248%25%2Fd">https://www.livemeeting.com/cc/usergroups/join?id=7DGRT6&amp;role=attend&amp;pw=h*ZR%248%25%2Fd</a> </li>
<li>Meeting ID: 7DGRT6 </li>
<li>Entry Code: h*ZR$8%/d</li>
</ul>
<p><b>Agenda:</b></p>
</p>
<p>5:00 –5:15 : Announcements     <br />5:15 –5:25 : Sponsor      <br />5:25 –6:45 : Query Tuning Tips (Itzik)      <br />6:45 –7:00 : Survey Collection and Giveaways</p>
</blockquote>
<p><b>Presentation:</b> </p>
<blockquote><p><b>Query Tuning Tips</b> </p>
<p>Given a SQL Server querying problem there&#8217;s much that you can do to enable a good performing solution. Tuning involves arranging an optimal physical environment, e.g., by creating supporting indexes, as well as writing the query in a way that it would get an optimal execution plan. Many factors can affect the efficiency of the solution including the availability of indexes, data distribution and density, and others. In different scenarios, a different solution could be the most efficient for the same querying problem. Query tuning could be considered an art. This session will provide various tips to do efficient query tuning and demonstrate those through specific tuning examples. </p>
<p><b>Itzik Ben-Gan</b> is a Mentor and Co-Founder of Solid Quality Mentors. A SQL Server Microsoft MVP (Most Valuable Professional) since 1999, Itzik has delivered numerous training events around the world focused on T-SQL Querying, Query Tuning and Programming. Itzik is the author of several books including Microsoft SQL Server 2008: T-SQL Fundamentals, Inside Microsoft SQL Server 2008: T-SQL Querying and Inside Microsoft SQL Server 2008: T-SQL Programming. He has written many articles for SQL Server Magazine as well as articles and whitepapers for MSDN. Itzik&#8217;s speaking activities include TechEd, DevWeek, SQLPASS, SQL Server Magazine Connections, various user groups around the world, and Solid Quality Mentors&#8217; events to name a few. Itzik is the author of Solid Quality Mentors&#8217; Advanced T-SQL Querying, Programming and Tuning and T-SQL Fundamentals courses along with being a primary resource within the company for their T-SQL related activities</p>
</blockquote>


<p>Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2010/07/passmn-july-meeting-next-week/' rel='bookmark' title='Permanent Link: PASSMN July Meeting Next Week'>PASSMN July Meeting Next Week</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/06/july-passmn-meeting-announced/' rel='bookmark' title='Permanent Link: July PASSMN Meeting Announced'>July PASSMN Meeting Announced</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2009/07/july-passmn-meeting-next-week-july-14/' rel='bookmark' title='Permanent Link: July PASSMN Meeting Next Week (July 14)'>July PASSMN Meeting Next Week (July 14)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.jasonstrate.com/index.php/2010/07/passmn-july-meeting-today/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PASSMN July Meeting Next Week</title>
		<link>http://www.jasonstrate.com/index.php/2010/07/passmn-july-meeting-next-week/</link>
		<comments>http://www.jasonstrate.com/index.php/2010/07/passmn-july-meeting-next-week/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 13:00:00 +0000</pubDate>
		<dc:creator>jstrate</dc:creator>
				<category><![CDATA[PASSMN]]></category>
		<category><![CDATA[Performance Tuning]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQLServerSyndication]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://www.jasonstrate.com/index.php/2010/07/passmn-july-meeting-next-week/</guid>
		<description><![CDATA[
The July PASSMN meeting is is coming up next week.&#160; If you’ve not registered now’s a great time to get your RSVP in.&#160; We have Itzik Ben-Gan (blog) coming in to talk about some query tuning tips.
Here are the meeting details…
Date and&#160; Time:
July 20, 2010, 5:00 PM CST
Location: 
8300 Norman Center Drive, 9th Floor, Bloomington, [...]


Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2010/07/passmn-july-meeting-today/' rel='bookmark' title='Permanent Link: PASSMN July Meeting Today'>PASSMN July Meeting Today</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/06/july-passmn-meeting-announced/' rel='bookmark' title='Permanent Link: July PASSMN Meeting Announced'>July PASSMN Meeting Announced</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2009/07/july-passmn-meeting-next-week-july-14/' rel='bookmark' title='Permanent Link: July PASSMN Meeting Next Week (July 14)'>July PASSMN Meeting Next Week (July 14)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F07%2Fpassmn-july-meeting-next-week%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F07%2Fpassmn-july-meeting-next-week%2F" height="61" width="51" /></a></div><p><a href="http://minnesota.sqlpass.org"><img style="display: inline; margin-left: 0px; margin-right: 0px" alt="Minnesota SQL Server Users Group" align="right" src="http://minnesota.sqlpass.org/Portals/61/logo.gif" width="177" height="71" /></a></p>
<p>The July PASSMN meeting is is coming up next week.&#160; If you’ve not registered now’s a great time to <a href="http://www.sqlpass.org/Events/ctl/ViewEvent/mid/521.aspx?ID=442">get your RSVP in</a>.&#160; We have Itzik Ben-Gan (<a href="http://blogs.solidq.com/ibengan/Home.aspx">blog</a>) coming in to talk about some query tuning tips.</p>
<p>Here are the meeting details…</p>
<blockquote><p><strong>Date and&#160; Time:</strong></p>
<p>July 20, 2010, 5:00 PM CST</p>
<p><b>Location: </b></p>
<p>8300 Norman Center Drive, 9th Floor, Bloomington, MN&#160; 55437 (<a href="http://www.bing.com/maps/OneClickDirections.aspx?rtp=%7epos.rg82g976mkjn_8300+Norman+Center+Dr%2c+Bloomington%2c+MN+55437-1027___a_&amp;rsd=44.875722527504_-93.3967977762222__the+north+(on+US-169+S)%7e44.8308277130127_-93.2932215929031__the+south+(on+I-35W+N)%7e44.8620003461838_-93.2855504751205__the+east+(on+I-494+W+%2f+SR-5+W)%7e44.8592001199722_-93.4069204330444__the+west+(on+I-494+E+%2f+SR-5+E)&amp;mkt=en-us&amp;FORM=LLMP">map</a>)</p>
<p><b>Live Meeting</b></p>
<ul>
<li>URL: <a href="https://www.livemeeting.com/cc/usergroups/join?id=7DGRT6&amp;role=attend&amp;pw=h*ZR%248%25%2Fd">https://www.livemeeting.com/cc/usergroups/join?id=7DGRT6&amp;role=attend&amp;pw=h*ZR%248%25%2Fd</a></li>
<li>Meeting ID: 7DGRT6 </li>
<li>Entry Code: h*ZR$8%/d</li>
</ul>
<p><b>Agenda:</b></p>
</p>
<p>5:00 –5:15 : Announcements     <br />5:15 –5:25 : Sponsor      <br />5:25 –6:45 : Query Tuning Tips (Itzik)      <br />6:45 –7:00 : Survey Collection and Giveaways</p>
</blockquote>
<p><b>Presentation:</b> </p>
<blockquote><p><b>Query Tuning Tips</b></p>
<p>Given a SQL Server querying problem there&#8217;s much that you can do to enable a good performing solution. Tuning involves arranging an optimal physical environment, e.g., by creating supporting indexes, as well as writing the query in a way that it would get an optimal execution plan. Many factors can affect the efficiency of the solution including the availability of indexes, data distribution and density, and others. In different scenarios, a different solution could be the most efficient for the same querying problem. Query tuning could be considered an art. This session will provide various tips to do efficient query tuning and demonstrate those through specific tuning examples.</p>
<p><b>Itzik Ben-Gan</b> is a Mentor and Co-Founder of Solid Quality Mentors. A SQL Server Microsoft MVP (Most Valuable Professional) since 1999, Itzik has delivered numerous training events around the world focused on T-SQL Querying, Query Tuning and Programming. Itzik is the author of several books including Microsoft SQL Server 2008: T-SQL Fundamentals, Inside Microsoft SQL Server 2008: T-SQL Querying and Inside Microsoft SQL Server 2008: T-SQL Programming. He has written many articles for SQL Server Magazine as well as articles and whitepapers for MSDN. Itzik&#8217;s speaking activities include TechEd, DevWeek, SQLPASS, SQL Server Magazine Connections, various user groups around the world, and Solid Quality Mentors&#8217; events to name a few. Itzik is the author of Solid Quality Mentors&#8217; Advanced T-SQL Querying, Programming and Tuning and T-SQL Fundamentals courses along with being a primary resource within the company for their T-SQL related activities</p>
</blockquote>
<p><font size="4"><a href="http://www.sqlpass.org/Events/ctl/ViewEvent/mid/521.aspx?ID=442">Please RSVP here if you will be attending in person, this helps us understand how many people to tell the sponsor to get food for.</a></font></p>


<p>Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2010/07/passmn-july-meeting-today/' rel='bookmark' title='Permanent Link: PASSMN July Meeting Today'>PASSMN July Meeting Today</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/06/july-passmn-meeting-announced/' rel='bookmark' title='Permanent Link: July PASSMN Meeting Announced'>July PASSMN Meeting Announced</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2009/07/july-passmn-meeting-next-week-july-14/' rel='bookmark' title='Permanent Link: July PASSMN Meeting Next Week (July 14)'>July PASSMN Meeting Next Week (July 14)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.jasonstrate.com/index.php/2010/07/passmn-july-meeting-next-week/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Webcast Today &#8211; Performance Impacts Related to Different Function Types</title>
		<link>http://www.jasonstrate.com/index.php/2010/07/webcast-today-performance-impacts-related-to-different-function-types/</link>
		<comments>http://www.jasonstrate.com/index.php/2010/07/webcast-today-performance-impacts-related-to-different-function-types/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 14:00:00 +0000</pubDate>
		<dc:creator>jstrate</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[PASS]]></category>
		<category><![CDATA[Performance Tuning]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[SQLServerSyndication]]></category>
		<category><![CDATA[T-SQL]]></category>
		<category><![CDATA[Presentation]]></category>

		<guid isPermaLink="false">http://www.jasonstrate.com/index.php/2010/07/webcast-today-performance-impacts-related-to-different-function-types/</guid>
		<description><![CDATA[I’ll be speaking for the SQL PASS Performance Virtual Chapter later today starting at 12 PM Eastern time.  The topic will be Performance Impacts Related to Different Function Types.  The abstract for the event is the following:
User defined functions provide a means to encapsulate business logic in the database tier.  Often the purpose of the [...]


Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2010/06/webcast-next-week-performance-impacts-related-to-different-function-types/' rel='bookmark' title='Permanent Link: Webcast Next Week &#8211; Performance Impacts Related to Different Function Types'>Webcast Next Week &#8211; Performance Impacts Related to Different Function Types</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/03/sswug-spring-10-ultimate-virtual-conference/' rel='bookmark' title='Permanent Link: SSWUG Spring &#8216;10 Ultimate Virtual Conference'>SSWUG Spring &#8216;10 Ultimate Virtual Conference</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/07/webcast-next-week-using-xml-to-query-execution-plans/' rel='bookmark' title='Permanent Link: Webcast Next Week &#8211; Using XML to Query Execution Plans'>Webcast Next Week &#8211; Using XML to Query Execution Plans</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F07%2Fwebcast-today-performance-impacts-related-to-different-function-types%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F07%2Fwebcast-today-performance-impacts-related-to-different-function-types%2F" height="61" width="51" /></a></div><p>I’ll be speaking for the <a href="http://www.sqlpass.org/">SQL PASS</a> <a href="http://performance.sqlpass.org/">Performance Virtual Chapter</a> later today starting at 12 PM Eastern time.  The topic will be <a href="https://www323.livemeeting.com/cc/usergroups/join?id=3CF2HR&amp;role=attend&amp;pw=S`w-~7\6b">Performance Impacts Related to Different Function Types</a>.  The abstract for the event is the following:</p>
<blockquote><p>User defined functions provide a means to encapsulate business logic in the database tier.  Often the purpose of the encapsulation is to provide standard method access segments of data within the database.  Unfortunately, not all methods of creating user defined functions are equal.  In this session we’ll review the types of user defined functions and investigate the performance impact in selecting the different types</p>
<p><strong>Goals:</strong></p>
<ul>
<li>Identify purposes for creating user defined functions</li>
<li>Discuss the types of user-defined functions</li>
<li>Demonstrate performance impact in selecting different types of functions</li>
</ul>
</blockquote>
<p>You can get to the event <a href="https://www323.livemeeting.com/cc/usergroups/join?id=3CF2HR&amp;role=attend&amp;pw=S`w-~7\6b">here</a>.</p>


<p>Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2010/06/webcast-next-week-performance-impacts-related-to-different-function-types/' rel='bookmark' title='Permanent Link: Webcast Next Week &#8211; Performance Impacts Related to Different Function Types'>Webcast Next Week &#8211; Performance Impacts Related to Different Function Types</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/03/sswug-spring-10-ultimate-virtual-conference/' rel='bookmark' title='Permanent Link: SSWUG Spring &#8216;10 Ultimate Virtual Conference'>SSWUG Spring &#8216;10 Ultimate Virtual Conference</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/07/webcast-next-week-using-xml-to-query-execution-plans/' rel='bookmark' title='Permanent Link: Webcast Next Week &#8211; Using XML to Query Execution Plans'>Webcast Next Week &#8211; Using XML to Query Execution Plans</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.jasonstrate.com/index.php/2010/07/webcast-today-performance-impacts-related-to-different-function-types/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>July PASSMN Meeting Announced</title>
		<link>http://www.jasonstrate.com/index.php/2010/06/july-passmn-meeting-announced/</link>
		<comments>http://www.jasonstrate.com/index.php/2010/06/july-passmn-meeting-announced/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 17:00:00 +0000</pubDate>
		<dc:creator>jstrate</dc:creator>
				<category><![CDATA[PASSMN]]></category>
		<category><![CDATA[Performance Tuning]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQLServerSyndication]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://www.jasonstrate.com/index.php/2010/06/july-passmn-meeting-announced/</guid>
		<description><![CDATA[Sometimes when we are putting together the user group meetings things change.&#160; Opportunities arise and we get a chance to take a cool meeting and turn it into a great meeting.&#160; That happened with this months meeting and it’s going to be great.
A couple things are different for this month… time and topic.&#160; This month [...]


Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2010/07/passmn-july-meeting-next-week/' rel='bookmark' title='Permanent Link: PASSMN July Meeting Next Week'>PASSMN July Meeting Next Week</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/07/passmn-july-meeting-today/' rel='bookmark' title='Permanent Link: PASSMN July Meeting Today'>PASSMN July Meeting Today</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2009/07/july-passmn-meeting-next-week-july-14/' rel='bookmark' title='Permanent Link: July PASSMN Meeting Next Week (July 14)'>July PASSMN Meeting Next Week (July 14)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F06%2Fjuly-passmn-meeting-announced%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F06%2Fjuly-passmn-meeting-announced%2F" height="61" width="51" /></a></div><p><a title="Lego Deadlock" href="http://www.flickr.com/photos/in-duce/2232109985/"><img style="margin: 0px 0px 5px 5px; display: inline" border="0" alt="Lego Deadlock" align="right" src="http://farm3.static.flickr.com/2102/2232109985_44161783c0.jpg" width="199" height="132" /></a>Sometimes when we are putting together the user group meetings things change.&#160; Opportunities arise and we get a chance to take a cool meeting and turn it into a great meeting.&#160; That happened with this months meeting and it’s going to be great.</p>
<p>A couple things are different for this month… time and topic.&#160; This month instead of meeting at 3:00 PM we are meeting at 5:00 PM.&#160; And the reason for the change is that we have Itzik Ben-Gan (<a href="http://blogs.solidq.com/ibengan/Home.aspx">blog</a>) stopping by for a presentation.</p>
<h2>The Presentation</h2>
<p>This month he’ll be teaching a course at <a href="http://www.benchmarklearning.com/Courses/CrsDetail.aspx?C=SQMTASQLPrg08">Benchmark Learning</a>.&#160; His course is <a href="http://www.solidq.com/squ/courses/Pages/Advanced%20T-SQL%20Querying,%20Programming%20and%20Tuning%20for%20SQL%20Server%202005%20and%202008.aspx">Advanced T-SQL Querying, Programming and Tuning for SQL Server 2005 &amp; 2008</a>.&#160; If you want more than what you suspect will be at the meeting, then this class is for you.</p>
<p>What can you suspect will be at the meeting this month?&#160; Well, how about this?</p>
<blockquote><p><b>Query Tuning Tips</b></p>
<p>Given a SQL Server querying problem there&#8217;s much that you can do to enable a good performing solution. Tuning involves arranging an optimal physical environment, e.g., by creating supporting indexes, as well as writing the query in a way that it would get an optimal execution plan. Many factors can affect the efficiency of the solution including the availability of indexes, data distribution and density, and others. In different scenarios, a different solution could be the most efficient for the same querying problem. Query tuning could be considered an art. This session will provide various tips to do efficient query tuning and demonstrate those through specific tuning examples.</p>
</blockquote>
<p>Pretty cool stuff, eh?</p>
<h2>And the Rest of the Details…</h2>
<p>This month’s meeting sponsor is <a href="http://www.digineer.com/">Digineer</a>.&#160; They’ll be providing the food and beverages.&#160; Digineer happens to be my employer and if you’re local and looking for a company with talent and skill this is a good place to look. </p>
<blockquote><p><strong>Date: </strong>July 20, 2010     <br /><strong>Time: </strong>5:00 PM – 7:00 PM     <br /><strong>Location: </strong>8300 Norman Center Drive, 9th Floor, Bloomington, MN&#160; 55437     <br /><strong>Live Meeting</strong>
<ul>
<li><strong>URL: </strong><a href="https://www.livemeeting.com/cc/usergroups/join?id=7DGRT6&amp;role=attend&amp;pw=h*ZR%248%25%2Fd">https://www.livemeeting.com/cc/usergroups/join?id=7DGRT6&amp;role=attend&amp;pw=h*ZR%248%25%2Fd</a> </li>
<li><b>Meeting ID: </b>7DGRT6 </li>
<li><b>Entry Code: </b>h*ZR$8%/d </li>
</ul>
<p><a href="http://www.sqlpass.org/Events/ctl/ViewEvent/mid/521.aspx?ID=442">The all important RSVP link – please do RSVP so that we’ll have enough food for the event.</a></p>
</blockquote>


<p>Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2010/07/passmn-july-meeting-next-week/' rel='bookmark' title='Permanent Link: PASSMN July Meeting Next Week'>PASSMN July Meeting Next Week</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/07/passmn-july-meeting-today/' rel='bookmark' title='Permanent Link: PASSMN July Meeting Today'>PASSMN July Meeting Today</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2009/07/july-passmn-meeting-next-week-july-14/' rel='bookmark' title='Permanent Link: July PASSMN Meeting Next Week (July 14)'>July PASSMN Meeting Next Week (July 14)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.jasonstrate.com/index.php/2010/06/july-passmn-meeting-announced/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Webcast Next Week &#8211; Performance Impacts Related to Different Function Types</title>
		<link>http://www.jasonstrate.com/index.php/2010/06/webcast-next-week-performance-impacts-related-to-different-function-types/</link>
		<comments>http://www.jasonstrate.com/index.php/2010/06/webcast-next-week-performance-impacts-related-to-different-function-types/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 17:00:00 +0000</pubDate>
		<dc:creator>jstrate</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[PASS]]></category>
		<category><![CDATA[Performance Tuning]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[SQLServerSyndication]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://www.jasonstrate.com/index.php/2010/06/webcast-next-week-performance-impacts-related-to-different-function-types/</guid>
		<description><![CDATA[I’ll be speaking for the SQL PASS Performance Virtual Chapter next week.&#160; It’ll be on July 6 at 12 PM Eastern time.&#160; The topic will be Performance Impacts Related to Different Function Types.&#160; The abstract for the event is the following: 
User defined functions provide a means to encapsulate business logic in the database tier.&#160; [...]


Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2010/07/webcast-today-performance-impacts-related-to-different-function-types/' rel='bookmark' title='Permanent Link: Webcast Today &#8211; Performance Impacts Related to Different Function Types'>Webcast Today &#8211; Performance Impacts Related to Different Function Types</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/03/sswug-spring-10-ultimate-virtual-conference/' rel='bookmark' title='Permanent Link: SSWUG Spring &#8216;10 Ultimate Virtual Conference'>SSWUG Spring &#8216;10 Ultimate Virtual Conference</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/07/webcast-next-week-using-xml-to-query-execution-plans/' rel='bookmark' title='Permanent Link: Webcast Next Week &#8211; Using XML to Query Execution Plans'>Webcast Next Week &#8211; Using XML to Query Execution Plans</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F06%2Fwebcast-next-week-performance-impacts-related-to-different-function-types%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F06%2Fwebcast-next-week-performance-impacts-related-to-different-function-types%2F" height="61" width="51" /></a></div><p>I’ll be speaking for the <a href="http://www.sqlpass.org/">SQL PASS</a> <a href="http://performance.sqlpass.org/">Performance Virtual Chapter</a> next week.&#160; It’ll be on July 6 at 12 PM Eastern time.&#160; The topic will be Performance Impacts Related to Different Function Types.&#160; The abstract for the event is the following: </p>
<blockquote><p>User defined functions provide a means to encapsulate business logic in the database tier.&#160; Often the purpose of the encapsulation is to provide standard method access segments of data within the database.&#160; Unfortunately, not all methods of creating user defined functions are equal.&#160; In this session we’ll review the types of user defined functions and investigate the performance impact in selecting the different types</p>
<p><strong>Goals:</strong></p>
<ul>
<li>Identify purposes for creating user defined functions </li>
<li>Discuss the types of user-defined functions </li>
<li>Demonstrate performance impact in selecting different types of functions </li>
</ul>
</blockquote>
<p>You can get to the event <a href="https://www323.livemeeting.com/cc/usergroups/join?id=3CF2HR&amp;role=attend&amp;pw=S`w-~7\6b">here</a>.</p>


<p>Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2010/07/webcast-today-performance-impacts-related-to-different-function-types/' rel='bookmark' title='Permanent Link: Webcast Today &#8211; Performance Impacts Related to Different Function Types'>Webcast Today &#8211; Performance Impacts Related to Different Function Types</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/03/sswug-spring-10-ultimate-virtual-conference/' rel='bookmark' title='Permanent Link: SSWUG Spring &#8216;10 Ultimate Virtual Conference'>SSWUG Spring &#8216;10 Ultimate Virtual Conference</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2010/07/webcast-next-week-using-xml-to-query-execution-plans/' rel='bookmark' title='Permanent Link: Webcast Next Week &#8211; Using XML to Query Execution Plans'>Webcast Next Week &#8211; Using XML to Query Execution Plans</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.jasonstrate.com/index.php/2010/06/webcast-next-week-performance-impacts-related-to-different-function-types/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Index Those Foreign Keys</title>
		<link>http://www.jasonstrate.com/index.php/2010/06/index-those-foreign-keys/</link>
		<comments>http://www.jasonstrate.com/index.php/2010/06/index-those-foreign-keys/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 21:00:59 +0000</pubDate>
		<dc:creator>jstrate</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Deadlocks]]></category>
		<category><![CDATA[Performance Tuning]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[SQL Server 2008 R2]]></category>
		<category><![CDATA[SQLServerSyndication]]></category>
		<category><![CDATA[Indexing]]></category>

		<guid isPermaLink="false">http://www.jasonstrate.com/?p=486</guid>
		<description><![CDATA[Today started with some quality time getting to know a deadlock that had occurred. While working through the deadlock, I noticed that there were a number of foreign key relationships that weren&#8217;t indexed on the parent side of the relationship.
I am going to skip over the why to index foreign keys and save that for [...]


Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2009/01/find-duplicate-foreign-keys/' rel='bookmark' title='Permanent Link: Find Duplicate Foreign Keys'>Find Duplicate Foreign Keys</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2009/07/gotta-stop-violating-foreign-keys/' rel='bookmark' title='Permanent Link: Gotta Stop Violating Foreign Keys'>Gotta Stop Violating Foreign Keys</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2009/02/change-trusted-state-of-foreign-keys/' rel='bookmark' title='Permanent Link: Change Trusted State of Foreign Keys'>Change Trusted State of Foreign Keys</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F06%2Findex-those-foreign-keys%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F06%2Findex-those-foreign-keys%2F" height="61" width="51" /></a></div><p><a title="Lego Deadlock" href="http://www.flickr.com/photos/oskay/265879129/"><img style="margin: 0px 0px 5px 5px; display: inline;" src="http://farm1.static.flickr.com/119/265879129_2b6b17edf2.jpg" border="0" alt="Lego Deadlock" width="199" height="132" align="right" /></a>Today started with some quality time getting to know a deadlock that had occurred. While working through the deadlock, I noticed that there were a number of foreign key relationships that weren&#8217;t indexed on the parent side of the relationship.</p>
<p>I am going to skip over the why to index foreign keys and save that for a later point when I have more time to go through it with some really pretty pictures. Today though, I want to share the scripts that I put together to look for these situations and help prevent issues related to them.</p>
<h2>Brute Force Indexing</h2>
<p>This first script is a brute force attack on this need. If you set the output for text results in SQL Server Management Studio (SSMS) you&#8217;ll get a script with all of the indexes you&#8217;ll need to cover all of your foreign key relationships.</p>
<pre class="brush: sql; ">

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET NOCOUNT ON

;WITH cIndexes
AS (
SELECT i.object_id
,i.name
,(SELECT QUOTENAME(ic.column_id,&#039;(&#039;)
FROM sys.index_columns ic
WHERE i.object_id = ic.object_id
AND i.index_id = ic.index_id
AND is_included_column = 0
ORDER BY key_ordinal ASC
FOR XML PATH(&#039;&#039;)) AS indexed_compare
FROM sys.indexes i
), cForeignKeys
AS (
SELECT fk.name AS foreign_key_name
,&#039;PARENT&#039; as foreign_key_type
,fkc.parent_object_id AS object_id
,STUFF((SELECT &#039;, &#039; + QUOTENAME(c.name)
FROM sys.foreign_key_columns ifkc
INNER JOIN sys.columns c ON ifkc.parent_object_id = c.object_id AND ifkc.parent_column_id = c.column_id
WHERE fk.object_id = ifkc.constraint_object_id
ORDER BY ifkc.constraint_column_id
FOR XML PATH(&#039;&#039;)), 1, 2, &#039;&#039;) AS fk_columns
,(SELECT QUOTENAME(ifkc.parent_column_id,&#039;(&#039;)
FROM sys.foreign_key_columns ifkc
WHERE fk.object_id = ifkc.constraint_object_id
ORDER BY ifkc.constraint_column_id
FOR XML PATH(&#039;&#039;)) AS fk_columns_compare
FROM sys.foreign_keys fk
INNER JOIN sys.foreign_key_columns fkc ON fk.object_id = fkc.constraint_object_id
WHERE fkc.constraint_column_id = 1
UNION ALL
SELECT fk.name AS foreign_key_name
,&#039;REFERENCED&#039; as foreign_key_type
,fkc.referenced_object_id AS object_id
,STUFF((SELECT &#039;, &#039; + QUOTENAME(c.name)
FROM sys.foreign_key_columns ifkc
INNER JOIN sys.columns c ON ifkc.referenced_object_id = c.object_id AND ifkc.referenced_column_id = c.column_id
WHERE fk.object_id = ifkc.constraint_object_id
ORDER BY ifkc.constraint_column_id
FOR XML PATH(&#039;&#039;)), 1, 2, &#039;&#039;) AS fk_columns
,(SELECT QUOTENAME(ifkc.referenced_column_id,&#039;(&#039;)
FROM sys.foreign_key_columns ifkc
WHERE fk.object_id = ifkc.constraint_object_id
ORDER BY ifkc.constraint_column_id
FOR XML PATH(&#039;&#039;)) AS fk_columns_compare
FROM sys.foreign_keys fk
INNER JOIN sys.foreign_key_columns fkc ON fk.object_id = fkc.constraint_object_id
WHERE fkc.constraint_column_id = 1
), cRowCount
AS (
SELECT object_id
,SUM(row_count) AS row_count
FROM sys.dm_db_partition_stats ps
WHERE index_id IN (1,0)
GROUP BY object_id
)
SELECT
&#039;--Missing foreign key index for &#039;+fk.foreign_key_name+CHAR(13)+CHAR(10)+&#039;GO&#039;+CHAR(13)+CHAR(10)+
+&#039;CREATE NONCLUSTERED INDEX FKIX_&#039;+OBJECT_NAME(fk.object_id)+&#039;_&#039;+REPLACE(REPLACE(REPLACE(REPLACE(fk.fk_columns,&#039;,&#039;,&#039;&#039;),&#039;[&#039;,&#039;&#039;),&#039;]&#039;,&#039;&#039;),&#039; &#039;,&#039;&#039;)
+CHAR(13)+CHAR(10)+
+&#039;ON [dbo].[&#039;+OBJECT_NAME(fk.object_id)+&#039;] (&#039;+fk.fk_columns+&#039;)&#039;+CHAR(13)+CHAR(10)+
+&#039;GO&#039;+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)
FROM cForeignKeys fk
INNER JOIN cRowCount rc ON fk.object_id = rc.object_id
LEFT OUTER JOIN cIndexes i ON fk.object_id = i.object_id AND i.indexed_compare LIKE fk.fk_columns_compare + &#039;%&#039;
WHERE i.name IS NULL
ORDER BY OBJECT_NAME(fk.object_id), fk.fk_columns
</pre>
<h2>Foreign Key Monitoring</h2>
<p>This second script accommodates for those situations when you may not want to just index every foreign key that is out there. Maybe there&#8217;s a really old table in the database with a foreign key relationship that just doesn&#8217;t matter any more. Is it worth indexing along a vector that won&#8217;t lead to any performance impact &#8211; either negative or positive? Most likely not.</p>
<p>For this script, the results output a list of foreign keys relationships that are not fully indexed. Included in the result script is a column with XML data in it that contains a script for creating an index. You may notice that the format for this is very similar to the schema created when outputtingmmissing Indexes from execution plans.</p>
<pre class="brush: sql; ">

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

;WITH cIndexes
AS (
SELECT i.object_id
,i.name
,(SELECT QUOTENAME(ic.column_id,&#039;(&#039;)
FROM sys.index_columns ic
WHERE i.object_id = ic.object_id
AND i.index_id = ic.index_id
AND is_included_column = 0
ORDER BY key_ordinal ASC
FOR XML PATH(&#039;&#039;)) AS indexed_compare
FROM sys.indexes i
), cForeignKeys
AS (
SELECT fk.name AS foreign_key_name
,&#039;PARENT&#039; as foreign_key_type
,fkc.parent_object_id AS object_id
,STUFF((SELECT &#039;, &#039; + QUOTENAME(c.name)
FROM sys.foreign_key_columns ifkc
INNER JOIN sys.columns c ON ifkc.parent_object_id = c.object_id AND ifkc.parent_column_id = c.column_id
WHERE fk.object_id = ifkc.constraint_object_id
ORDER BY ifkc.constraint_column_id
FOR XML PATH(&#039;&#039;)), 1, 2, &#039;&#039;) AS fk_columns
,(SELECT QUOTENAME(ifkc.parent_column_id,&#039;(&#039;)
FROM sys.foreign_key_columns ifkc
WHERE fk.object_id = ifkc.constraint_object_id
ORDER BY ifkc.constraint_column_id
FOR XML PATH(&#039;&#039;)) AS fk_columns_compare
FROM sys.foreign_keys fk
INNER JOIN sys.foreign_key_columns fkc ON fk.object_id = fkc.constraint_object_id
WHERE fkc.constraint_column_id = 1
UNION ALL
SELECT fk.name AS foreign_key_name
,&#039;REFERENCED&#039; as foreign_key_type
,fkc.referenced_object_id AS object_id
,STUFF((SELECT &#039;, &#039; + QUOTENAME(c.name)
FROM sys.foreign_key_columns ifkc
INNER JOIN sys.columns c ON ifkc.referenced_object_id = c.object_id AND ifkc.referenced_column_id = c.column_id
WHERE fk.object_id = ifkc.constraint_object_id
ORDER BY ifkc.constraint_column_id
FOR XML PATH(&#039;&#039;)), 1, 2, &#039;&#039;) AS fk_columns
,(SELECT QUOTENAME(ifkc.referenced_column_id,&#039;(&#039;)
FROM sys.foreign_key_columns ifkc
WHERE fk.object_id = ifkc.constraint_object_id
ORDER BY ifkc.constraint_column_id
FOR XML PATH(&#039;&#039;)) AS fk_columns_compare
FROM sys.foreign_keys fk
INNER JOIN sys.foreign_key_columns fkc ON fk.object_id = fkc.constraint_object_id
WHERE fkc.constraint_column_id = 1
), cRowCount
AS (
SELECT object_id
,SUM(row_count) AS row_count
FROM sys.dm_db_partition_stats ps
WHERE index_id IN (1,0)
GROUP BY object_id
)
SELECT
fk.foreign_key_name
,OBJECT_NAME(fk.object_id) AS fk_table_name
,fk.fk_columns
,rc.row_count AS row_count
,CAST(&#039;&lt;!--dex  &#039;+CHAR(13)+CHAR(10)+&#039;Missing foreign key index for &#039;+fk.foreign_key_name+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+&#039;USE [&#039;+DB_NAME()+&#039;]&#039;&lt;br--&gt; +CHAR(13)+CHAR(10)+&#039;GO&#039;+CHAR(13)+CHAR(10)+
+&#039;CREATE NONCLUSTERED INDEX []&#039;+CHAR(13)+CHAR(10)+
+&#039;ON [dbo].[&#039;+OBJECT_NAME(fk.object_id)+&#039;] (&#039;+fk.fk_columns+&#039;)&#039;+CHAR(13)+CHAR(10)+
+&#039;GO&#039;+CHAR(13)+CHAR(10)+&#039;--?&gt;&#039; AS xml) foreign_key_index_schema
FROM cForeignKeys fk
INNER JOIN cRowCount rc ON fk.object_id = rc.object_id
LEFT OUTER JOIN cIndexes i ON fk.object_id = i.object_id AND i.indexed_compare LIKE fk.fk_columns_compare + &#039;%&#039;
WHERE i.name IS NULL
ORDER BY OBJECT_NAME(fk.object_id), fk.fk_columns
</pre>
<h2>Closing Up</h2>
<p>The DDL schema output in these scripts is very basic. It doesn&#8217;t account for potentially important things like partitions and filegroups. Obviously, you&#8217;ll need to modify this for your own environment and don&#8217;t just run this on production.</p>
<p>I see a lot of potential in these scripts and am planning to include them as part of preparing for releases when I am clients. A good way to dot the i&#8217;s and cross the t&#8217;s.</p>
<p>Individual results may vary. No Legos were harmed in the writing on this post.</p>


<p>Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2009/01/find-duplicate-foreign-keys/' rel='bookmark' title='Permanent Link: Find Duplicate Foreign Keys'>Find Duplicate Foreign Keys</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2009/07/gotta-stop-violating-foreign-keys/' rel='bookmark' title='Permanent Link: Gotta Stop Violating Foreign Keys'>Gotta Stop Violating Foreign Keys</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2009/02/change-trusted-state-of-foreign-keys/' rel='bookmark' title='Permanent Link: Change Trusted State of Foreign Keys'>Change Trusted State of Foreign Keys</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.jasonstrate.com/index.php/2010/06/index-those-foreign-keys/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Searching for Plans</title>
		<link>http://www.jasonstrate.com/index.php/2010/05/searching-for-plans/</link>
		<comments>http://www.jasonstrate.com/index.php/2010/05/searching-for-plans/#comments</comments>
		<pubDate>Mon, 03 May 2010 22:00:00 +0000</pubDate>
		<dc:creator>jstrate</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[DBADiagnostics]]></category>
		<category><![CDATA[DMO]]></category>
		<category><![CDATA[Performance Tuning]]></category>
		<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[SQLServerSyndication]]></category>

		<guid isPermaLink="false">http://www.jasonstrate.com/index.php/2010/05/searching-for-plans/</guid>
		<description><![CDATA[
A while back I wrote a post on a procedure I created for the DBADiagnostics database that I talk about from time to time.  This procedure allowed users to search the procedure cache to find plans for procedures by database name and object name.  This had worked out pretty good until I noticed something the [...]


Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2009/06/really-search-cache-for-execution-plans/' rel='bookmark' title='Permanent Link: Really Search Cache for Execution Plans'>Really Search Cache for Execution Plans</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2009/01/search-cache-for-execution-plans/' rel='bookmark' title='Permanent Link: Search Cache For Execution Plans'>Search Cache For Execution Plans</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2009/04/find-query-plans-that-may-utilize-parallelism/' rel='bookmark' title='Permanent Link: Find Query Plans That May Utilize Parallelism'>Find Query Plans That May Utilize Parallelism</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F05%2Fsearching-for-plans%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F05%2Fsearching-for-plans%2F" height="61" width="51" /></a></div><p><a href="http://www.flickr.com/photos/parl/70999185/" target="_blank"><img style="display: inline; border-width: 0px;" title="70999185_58c1ad9d35" src="http://www.jasonstrate.com/images/SearchingforPlans_E97E/70999185_58c1ad9d35.jpg" border="0" alt="70999185_58c1ad9d35" width="165" height="111" align="right" /></a></p>
<p>A while back I wrote a post on a procedure I created for the <a href="http://www.jasonstrate.com/index.php/tag/dbadiagnostics/" target="_blank">DBADiagnostics database</a> that I talk about from time to time.  This <a href="http://www.jasonstrate.com/index.php/2009/06/really-search-cache-for-execution-plans/" target="_blank">procedure allowed users to search the procedure cache to find plans for procedures by database name and object name</a>.  This had worked out pretty good until I noticed something the other day.</p>
<p>The procedure is using the <a href="http://msdn.microsoft.com/en-us/library/ms189741.aspx" target="_blank">sys.dm_exec_query_stats</a> as the based table for the query to build itself upon.  The trouble with using this <a href="http://www.jasonstrate.com/index.php/tag/dmo/" target="_blank">DMV</a> is that it doesn’t have all of the plans listed from the procedure cache.  Only those that currently have stats stored for sql_handles.</p>
<p>About the same time I started writing this post, I noticed a post by Adam Machanic (<a href="http://twitter.com/adammachanic" target="_blank">twitter</a> | <a href="http://sqlblog.com/blogs/adam_machanic/default.aspx" target="_blank">blog</a>) in which he puts out <a href="http://sqlblog.com/blogs/adam_machanic/archive/2010/04/22/a-warning-to-those-using-sys-dm-exec-query-stats.aspx" target="_blank">a warning to those using sys.dm_exec_query_stats</a>.  In that post, he discusses how the ALTER TABLE statement can result in a batch missing this DMV.</p>
<p>Considering all this lends itself to the question, is there a better DMV that can be used to find plans in the procedure cache?</p>
<h2>Use sys.dm_exec_cached_plans Instead</h2>
<p>Another DMV that has this information in it is the DMV <a href="http://msdn.microsoft.com/en-us/library/ms187404.aspx" target="_blank">sys.dm_exec_cached_plans</a>.  This DMV is designed to provide a list of all cached plans in the procedure cache.  To illustrate the difference, lets take a look at the following two queries.</p>
<pre class="brush: sql; ">

SELECT COUNT(DISTINCT plan_handle)
FROM sys.dm_exec_cached_plans
GO 

SELECT COUNT(DISTINCT plan_handle)
FROM sys.dm_exec_query_stats
GO
</pre>
<p>On my system, the following results are returned:</p>
<p><a href="http://www.jasonstrate.com/images/SearchingforPlans_E97E/image.png"><img style="display: inline; border-width: 0px;" title="image" src="http://www.jasonstrate.com/images/SearchingforPlans_E97E/image_thumb.png" border="0" alt="image" width="144" height="117" /></a></p>
<p>The first value is the number of plan_handles in sys.dm_exec_cached_plans.  The second is the number of plan_handles in sys.dm_exec_query_stats.  There is a substantial difference between the two.  This is something you’d be expecting based on the information at the start of this post.</p>
<h2>Query to Find Cached Plans</h2>
<p>Now that I’ve outlined the issues with my original post, lets take a look at a script that will query the procedure cache to look for plans stored for stored procedures and other database objects.</p>
<pre class="brush: sql; ">

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
GO

DECLARE @DatabaseName sysname
    ,@ObjectName sysname 

SELECT @DatabaseName = &#039;msdb&#039;
    ,@ObjectName = &#039;sp_jobhistory_row_limiter&#039;;

WITH PlanSearch
AS (
      SELECT qp.dbid
            ,qp.objectid
            ,DB_NAME(qp.dbid) as DatabaseName
            ,OBJECT_NAME(qp.objectid, qp.dbid) as ObjectName
            ,cp.usecounts
            ,cp.plan_handle
      FROM sys.dm_exec_cached_plans cp
            CROSS APPLY sys.dm_exec_text_query_plan(cp.plan_handle, DEFAULT, DEFAULT) qp
    WHERE cp.cacheobjtype = &#039;Compiled Plan&#039;
      AND (DB_NAME(qp.dbid) = @DatabaseName OR NULLIF(@DatabaseName,&#039;&#039;) IS NULL)
    AND (OBJECT_NAME(qp.objectid, qp.dbid) = @ObjectName OR NULLIF(@ObjectName, &#039;&#039;) IS NULL)
)
,PlansAndStats
AS (
      SELECT ps.DatabaseName
        ,ps.ObjectName
        ,ps.usecounts -- Use in place of qs.execution_count for whole plan count
        ,CAST(SUM(qs.total_worker_time)/(ps.usecounts*1.) as decimal(12,2)) AS avg_cpu_time
        ,CAST(SUM(qs.total_logical_reads + qs.total_logical_writes)/(ps.usecounts*1.) as decimal(12,2)) AS avg_io
        ,SUM(qs.total_elapsed_time)/(ps.usecounts)/1000 as avg_elapsed_time_ms
        ,ps.plan_handle
    FROM PlanSearch ps
            LEFT OUTER JOIN sys.dm_exec_query_stats qs ON ps.plan_handle = qs.plan_handle
    GROUP BY ps.DatabaseName
        ,ps.ObjectName
        ,ps.usecounts
            ,ps.plan_handle
)
SELECT ps.DatabaseName
    ,ps.ObjectName
      ,ps.usecounts
      ,ps.avg_cpu_time
      ,ps.avg_io
      ,ps.avg_elapsed_time_ms
      ,qp.query_plan
      ,ps.plan_handle
FROM PlansAndStats ps
      CROSS APPLY sys.dm_exec_query_plan(ps.plan_handle) qp 
</pre>
<p>Executing the script above provides the following output:</p>
<p><a href="http://www.jasonstrate.com/images/SearchingforPlans_E97E/image_3.png"><img style="display: inline; border: 0px;" title="image" src="http://www.jasonstrate.com/images/SearchingforPlans_E97E/image_thumb_3.png" border="0" alt="image" width="557" height="23" /></a></p>
<p>The output includes the name of the object being sought and a link to the plan from the procedure cache.  Included with this is some basic performance information from sys.dm_exec_query_stats that can be useful in determining performance variations between the plans returned.</p>
<h2>Procedure to Find Plans</h2>
<p>For those that like to take these scripts and build stored procedures for them.  I’ve also included a script below that includes this information.</p>
<div id="scid:F60BB8FA-6F02-4999-8F5E-9DD4E92C4DA7:e7849190-c137-4aba-a9ee-954dc29c9e08" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;">
<div><a href="http://www.jasonstrate.com/images/SearchingforPlans_E97E/Utility.CachedPlanSearch.txt" target="_self">Utility.CachedPlanSearch.txt</a></div>
</div>


<p>Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2009/06/really-search-cache-for-execution-plans/' rel='bookmark' title='Permanent Link: Really Search Cache for Execution Plans'>Really Search Cache for Execution Plans</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2009/01/search-cache-for-execution-plans/' rel='bookmark' title='Permanent Link: Search Cache For Execution Plans'>Search Cache For Execution Plans</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2009/04/find-query-plans-that-may-utilize-parallelism/' rel='bookmark' title='Permanent Link: Find Query Plans That May Utilize Parallelism'>Find Query Plans That May Utilize Parallelism</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.jasonstrate.com/index.php/2010/05/searching-for-plans/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Changing A Performance Counter Log Format</title>
		<link>http://www.jasonstrate.com/index.php/2010/05/changing-a-performance-counter-log-format/</link>
		<comments>http://www.jasonstrate.com/index.php/2010/05/changing-a-performance-counter-log-format/#comments</comments>
		<pubDate>Sun, 02 May 2010 17:37:00 +0000</pubDate>
		<dc:creator>jstrate</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Performance Tuning]]></category>
		<category><![CDATA[SQLServerSyndication]]></category>

		<guid isPermaLink="false">http://www.jasonstrate.com/index.php/2010/05/changing-a-performance-counter-log-format/</guid>
		<description><![CDATA[
Ever come across performance counter log that isn’t in your desired format?&#160; This is a situation I’ve been in a number of times.&#160; And wouldn’t you know, I usually space off the command line tool that I can use to do this.
The gem of a tool that you can use to change performance log formats [...]


Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2007/04/troubleshooting-performance-problems-in-sql-server-2005/' rel='bookmark' title='Permanent Link: Troubleshooting Performance Problems in SQL Server 2005'>Troubleshooting Performance Problems in SQL Server 2005</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2007/03/sql-server-2005-performance-dashboard-reports/' rel='bookmark' title='Permanent Link: SQL Server 2005 Performance Dashboard Reports'>SQL Server 2005 Performance Dashboard Reports</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2009/11/if-you-dont-know-where-youve-been/' rel='bookmark' title='Permanent Link: If You Don&#8217;t Know Where You&#8217;ve Been'>If You Don&#8217;t Know Where You&#8217;ve Been</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F05%2Fchanging-a-performance-counter-log-format%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.jasonstrate.com%2Findex.php%2F2010%2F05%2Fchanging-a-performance-counter-log-format%2F" height="61" width="51" /></a></div><p><a title="We&#39;ve picked something up on radar!" href="http://www.flickr.com/photos/60648084@N00/3029452838/"><img style="display: inline; margin-left: 0px; margin-right: 0px" border="0" alt="We&#39;ve picked something up on radar!" align="right" src="http://static.flickr.com/3191/3029452838_9da02e1326.jpg" width="135" height="101" /></a></p>
<p>Ever come across performance counter log that isn’t in your desired format?&#160; This is a situation I’ve been in a number of times.&#160; And wouldn’t you know, I usually space off the command line tool that I can use to do this.</p>
<p>The gem of a tool that you can use to change performance log formats is called <a href="http://technet.microsoft.com/en-us/library/bb490958.aspx" target="_blank">relog</a>.&#160; There are a number parameters that can be passed into the tool which are detailed on the <a href="http://technet.microsoft.com/en-us/library/bb490958.aspx" target="_blank">TechNet page for relog</a>.</p>
<p>In a simple example, supposed you have a performance counter log named SQLStats.blg that was in a binary format.&#160; And suppose ever further that you needed this log to be in a CSV format.</p>
<p>Executing relog with the following parameters would complete this task above.</p>
<blockquote><p>relog &quot;SQLStats.blg&quot; -f CSV -o &quot;SQLStats.csv&quot;</p>
</blockquote>


<p>Related posts:<ol><li><a href='http://www.jasonstrate.com/index.php/2007/04/troubleshooting-performance-problems-in-sql-server-2005/' rel='bookmark' title='Permanent Link: Troubleshooting Performance Problems in SQL Server 2005'>Troubleshooting Performance Problems in SQL Server 2005</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2007/03/sql-server-2005-performance-dashboard-reports/' rel='bookmark' title='Permanent Link: SQL Server 2005 Performance Dashboard Reports'>SQL Server 2005 Performance Dashboard Reports</a></li>
<li><a href='http://www.jasonstrate.com/index.php/2009/11/if-you-dont-know-where-youve-been/' rel='bookmark' title='Permanent Link: If You Don&#8217;t Know Where You&#8217;ve Been'>If You Don&#8217;t Know Where You&#8217;ve Been</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.jasonstrate.com/index.php/2010/05/changing-a-performance-counter-log-format/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
