<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.sqlprof.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tags 'Performance' and 'SET STATISTICS TIME'</title><link>http://www.sqlprof.com/search/SearchResults.aspx?o=DateDescending&amp;tag=Performance,SET+STATISTICS+TIME&amp;orTags=0</link><description>Search results matching tags 'Performance' and 'SET STATISTICS TIME'</description><dc:language>en-US</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Understanding SET STATISTICS IO and SET STATISTICS TIME</title><link>http://www.sqlprof.com/blogs/sqlserver/archive/2008/03/23/understanding-set-statistics-io-and-set-statistics-time.aspx</link><pubDate>Sun, 23 Mar 2008 14:15:07 GMT</pubDate><guid isPermaLink="false">f1c11735-f88c-466b-aadf-9e672bf81be1:15</guid><dc:creator>Eric</dc:creator><description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Today, I want to talk about two commands that are often overlooked.&amp;nbsp; &lt;a href="http://msdn2.microsoft.com/en-us/library/ms184361.aspx?lc=1033" target="_blank"&gt;SET STATISTICS IO&lt;/a&gt; and &lt;a href="http://msdn2.microsoft.com/en-us/library/ms190287.aspx?lc=1033" target="_blank"&gt;SET STATISTICS TIME&lt;/a&gt; these two commands are very useful when comes time to tune a query.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Tuning a query seems simple enough. In essence, we want our searches to run faster.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;When I teach my class on “Optimizing SQL Server” I realize that many people find it difficult to accomplish this task.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;While there are many reasons why query tuning is difficult, this article will concentrate on one aspect.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;And that is that query tuning takes place in an environment that is often changing from second to second, making it hard to really know what exactly is going on.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;When you run a query, different server resources are used. One of those resources is the CPU time. If you run the same query over and over again, the CPU time needed to run the query will remain very close from one execution to other. I am not talking about the total time it takes to run query from the start to the end, but the amount of CPU time needed to run the query.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Another resource that the Server needs is IO. Whenever you run a query, the server must retrieve data from memory (logical reads) or from the disk (physical reads).&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Using high CPU and IO resources will result in slow query performance.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;So your goal should be to rewrite your queries in such a way that they use less CPU and IO resources. If you accomplish this, then the performance of your query will improve.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Both the &lt;a href="http://msdn2.microsoft.com/en-us/library/ms184361.aspx?lc=1033" target="_blank"&gt;SET STATISTICS IO&lt;/a&gt; and the &lt;a href="http://msdn2.microsoft.com/en-us/library/ms190287.aspx?lc=1033" target="_blank"&gt;SET STATISTICS TIME&lt;/a&gt; Transact-SQL commands have been around a long time. But for some reason, they are often ignored.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Both commands can be “turned on” using Transact-SQL commands or by setting the appropriate connection properties in Options dialog from the tools menu in Management Studio.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10.5pt;font-family:&amp;#39;Trebuchet MS&amp;#39;;"&gt;&lt;a href="http://sqlprof.com/blogs/sqlserver/WindowsLiveWriter/UnderstandingSETSTATISTICSIOandSETSTATIS_BD7B/clip_image002_8.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="343" alt="clip_image002" src="http://sqlprof.com/blogs/sqlserver/WindowsLiveWriter/UnderstandingSETSTATISTICSIOandSETSTATIS_BD7B/clip_image002_thumb_3.jpg" width="585" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;By default, these settings are not turned on.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;The SET STATISTICS IO and the SET STATISTICS TIME commands act like settings, turning on and off various reported information on the resources our queries use.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;So let’s look at an example of how use these commands.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;To begin our example, start Management Studio and connect to a SQL Server. For this example, we will use the sample database provided by with SQL Server 2005 and that is AdventureWorks.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;So start by making AdventureWorks your default database.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Next, run this query: &lt;/span&gt;&lt;/p&gt; &lt;div style="border-right:medium none;padding-right:0cm;border-top:#c8cdde 1pt solid;padding-left:0cm;background:#dddddd;padding-bottom:0cm;border-left:medium none;padding-top:4pt;border-bottom:medium none;mso-element:para-border-div;mso-border-top-alt:solid #c8cdde .75pt;"&gt;&lt;span style="font-size:9pt;color:#000066;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;"&gt;USE AdventureWorks;&lt;/span&gt;  &lt;p class="MsoNormal" style="border-right:medium none;padding-right:0cm;border-top:medium none;padding-left:0cm;background:#dddddd;margin-bottom:7.5pt;padding-bottom:0cm;vertical-align:top;border-left:medium none;line-height:140%;padding-top:0cm;border-bottom:medium none;mso-border-top-alt:solid #c8cdde .75pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;mso-padding-alt:4.0pt 0cm 0cm 0cm;"&gt;&lt;span style="font-size:9pt;color:#000066;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;"&gt;GO&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right:medium none;padding-right:0cm;border-top:medium none;padding-left:0cm;background:#dddddd;margin-bottom:7.5pt;padding-bottom:0cm;vertical-align:top;border-left:medium none;line-height:140%;padding-top:0cm;border-bottom:medium none;mso-border-top-alt:solid #c8cdde .75pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;mso-padding-alt:4.0pt 0cm 0cm 0cm;"&gt;&lt;span style="font-size:9pt;color:#000066;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;"&gt;SELECT * FROM Person.Contact;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right:medium none;padding-right:0cm;border-top:medium none;padding-left:0cm;background:#dddddd;margin-bottom:7.5pt;padding-bottom:0cm;vertical-align:top;border-left:medium none;line-height:140%;padding-top:0cm;border-bottom:medium none;mso-border-top-alt:solid #c8cdde .75pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;mso-padding-alt:4.0pt 0cm 0cm 0cm;"&gt;&lt;span style="font-size:9pt;color:#000066;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;"&gt;GO&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Normally this query should return 19972 rows.&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Now, let’s run the same query, but this time, let&amp;#39;s run the SET STATISTICS IO and the SET STATISTICS TIME commands before we run the query.&amp;nbsp; &lt;/span&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Before we begin our example, run these two commands &lt;a href="http://msdn2.microsoft.com/en-us/library/ms187762.aspx" target="_blank"&gt;DBCC DROPCLEANBUFFERS&lt;/a&gt; and &lt;a href="http://msdn2.microsoft.com/en-us/library/ms174283.aspx" target="_blank"&gt;DBCC FREEPROCCACHE&lt;/a&gt; (don’t run these on a production server) first. These two commands will clear out SQL Server’s data and procedure cache.&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;div style="border-right:medium none;padding-right:0cm;border-top:#c8cdde 1pt solid;padding-left:0cm;background:#dddddd;padding-bottom:0cm;border-left:medium none;padding-top:4pt;border-bottom:medium none;mso-element:para-border-div;mso-border-top-alt:solid #c8cdde .75pt;"&gt;&lt;span style="font-size:9pt;color:#000066;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;mso-bidi-font-size:10.0pt;"&gt;DBCC DROPCLEANBUFFERS&lt;br /&gt;DBCC FREEPROCCACHE&lt;/span&gt;&lt;/div&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-bidi-font-size:12.0pt;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-bidi-font-size:12.0pt;"&gt;Now, enter and run the following Transact-SQL commands:&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;div style="border-right:medium none;padding-right:0cm;border-top:#c8cdde 1pt solid;padding-left:0cm;background:#dddddd;padding-bottom:0cm;border-left:medium none;padding-top:4pt;border-bottom:medium none;mso-element:para-border-div;mso-border-top-alt:solid #c8cdde .75pt;"&gt;&lt;span style="font-size:9pt;color:#000066;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;mso-bidi-font-size:10.0pt;"&gt;SET STATISTICS IO ON&lt;br /&gt;SET STATISTICS TIME ON&lt;/span&gt;&lt;/div&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-bidi-font-size:12.0pt;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-bidi-font-size:12.0pt;"&gt;Once you have done this, then run this command again:&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;div style="border-right:medium none;padding-right:0cm;border-top:#c8cdde 1pt solid;padding-left:0cm;background:#dddddd;padding-bottom:0cm;border-left:medium none;padding-top:4pt;border-bottom:medium none;mso-element:para-border-div;mso-border-top-alt:solid #c8cdde .75pt;"&gt;&lt;span style="font-size:9pt;color:#000066;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;"&gt;SELECT * FROM Person.Contact;&lt;/span&gt;  &lt;p class="MsoNormal" style="border-right:medium none;padding-right:0cm;border-top:medium none;padding-left:0cm;background:#dddddd;margin-bottom:7.5pt;padding-bottom:0cm;vertical-align:top;border-left:medium none;line-height:140%;padding-top:0cm;border-bottom:medium none;mso-border-top-alt:solid #c8cdde .75pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;mso-padding-alt:4.0pt 0cm 0cm 0cm;"&gt;&lt;span style="font-size:9pt;color:#000066;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;"&gt;GO&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;After you run these command, you will see new information in the message tab that you did not see before. &lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;a href="http://sqlprof.com/blogs/sqlserver/WindowsLiveWriter/UnderstandingSETSTATISTICSIOandSETSTATIS_BD7B/clip_image004_4.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="403" alt="clip_image004" src="http://sqlprof.com/blogs/sqlserver/WindowsLiveWriter/UnderstandingSETSTATISTICSIOandSETSTATIS_BD7B/clip_image004_thumb_1.jpg" width="513" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;(The results you get may vary, but we will talk about this below as we explain everything you see above.)&lt;br /&gt;&lt;br /&gt;Let me explain what it all means:&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;SET STATISTICS TIME Results:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;“SQL Server parse and compile time:” tells us how much CPU time and total time it took SQL Server to parse and compile our T-SQL statement.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;In my case, it took 0 ms. of CPU time, and a total time of 359 ms. of elapsed time. Your CPU time will probably vary because your server is different than mine.&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;If you re-execute the query, again without clearing the cache (as recommended above), most likely both instances of CPU and compile time will be 0, as the cached query plan will be reused, so no new compile time is required.&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;This is not too important, what is of interest to us is the time information displayed at the bottom of the query’s output. Here is it is again:&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="mso-layout-grid-align:none;"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;SQL Server Execution Times:&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;CPU time = 125 ms,&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;elapsed time = 1112 ms.&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;What this tells us is how much CPU time was used to execute the query, and how long the query took to run.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;The CPU time is a somewhat consistent measurement of the amount of CPU resources it takes for your query to run, and this is relatively independent of how busy your CPU is. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;The elapsed time number is a measurement of how long the query took to execute (not counting the time for locks or reads). This number will vary a lot because depending on the load on your server.&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Because the CPU time is relatively consistent, this is what you should use to determine whether the changes you make in your queries, are helping or making things worse.&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;SET STATISTICS IO Results:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Table &amp;#39;Contact&amp;#39;. Scan count 1, logical reads 561, physical reads 1, read-ahead reads 559, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;This is not all useful; let me try to explain what it means.&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;table class="MsoNormalTable" style="border-right:medium none;border-top:medium none;margin-left:1.15pt;border-left:medium none;border-bottom:medium none;border-collapse:collapse;mso-padding-alt:0cm 0cm 0cm 0cm;mso-table-layout-alt:fixed;mso-border-alt:solid windowtext .5pt;mso-border-insideh:.5pt solid windowtext;mso-border-insidev:.5pt solid windowtext;" cellspacing="0" cellpadding="0"&gt;  &lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;"&gt; &lt;td style="border-right:windowtext 1pt solid;padding-right:0cm;border-top:windowtext 1pt solid;padding-left:0cm;padding-bottom:0cm;border-left:windowtext 1pt solid;width:90pt;padding-top:0cm;border-bottom:windowtext 1pt solid;mso-border-alt:solid windowtext .5pt;"&gt; &lt;p class="MsoNormal" style="text-align:center;" align="center"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:arial;mso-ansi-language:fr-ca;"&gt;Output item&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-right:windowtext 1pt solid;padding-right:0cm;border-top:windowtext 1pt solid;padding-left:0cm;padding-bottom:0cm;border-left:medium none;width:377.95pt;padding-top:0cm;border-bottom:windowtext 1pt solid;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;"&gt; &lt;p class="MsoNormal" style="text-align:center;" align="center"&gt;&lt;b&gt;&lt;span style="font-size:10pt;font-family:arial;mso-ansi-language:fr-ca;"&gt;Meaning&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="mso-yfti-irow:1;"&gt; &lt;td style="border-right:windowtext 1pt solid;padding-right:0cm;border-top:medium none;padding-left:0cm;padding-bottom:0cm;border-left:windowtext 1pt solid;width:90pt;padding-top:0cm;border-bottom:windowtext 1pt solid;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-bidi-font-weight:bold;mso-ansi-language:fr-ca;"&gt;Table&lt;/span&gt;&lt;span style="font-size:10pt;font-family:arial;mso-ansi-language:fr-ca;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-right:windowtext 1pt solid;padding-right:0cm;border-top:medium none;padding-left:0cm;padding-bottom:0cm;border-left:medium none;width:377.95pt;padding-top:0cm;border-bottom:windowtext 1pt solid;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Name of the table, in our case ‘Contact’&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="mso-yfti-irow:2;"&gt; &lt;td style="border-right:windowtext 1pt solid;padding-right:0cm;border-top:medium none;padding-left:0cm;padding-bottom:0cm;border-left:windowtext 1pt solid;width:90pt;padding-top:0cm;border-bottom:windowtext 1pt solid;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-bidi-font-weight:bold;mso-ansi-language:fr-ca;"&gt;Scan count&lt;/span&gt;&lt;span style="font-size:10pt;font-family:arial;mso-ansi-language:fr-ca;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-right:windowtext 1pt solid;padding-right:0cm;border-top:medium none;padding-left:0cm;padding-bottom:0cm;border-left:medium none;width:377.95pt;padding-top:0cm;border-bottom:windowtext 1pt solid;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Refers to the number of times that tables referenced in the query have been accessed. In our example, the table in our query was only accessed 1 time. For queries that don’t include joins, this information is not too helpful. But if your query has one or more joins, then this information may be of use to you.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="background:yellow;mso-highlight:yellow;"&gt;You may want to pay attention to the Scan Count, watching to see if it is increasing or decreasing as you tune the query.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="mso-yfti-irow:3;"&gt; &lt;td style="border-right:windowtext 1pt solid;padding-right:0cm;border-top:medium none;padding-left:0cm;padding-bottom:0cm;border-left:windowtext 1pt solid;width:90pt;padding-top:0cm;border-bottom:windowtext 1pt solid;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;background:yellow;font-family:arial;mso-bidi-font-weight:bold;mso-ansi-language:fr-ca;mso-highlight:yellow;"&gt;logical reads&lt;/span&gt;&lt;span style="font-size:10pt;font-family:arial;mso-ansi-language:fr-ca;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-right:windowtext 1pt solid;padding-right:0cm;border-top:medium none;padding-left:0cm;padding-bottom:0cm;border-left:medium none;width:377.95pt;padding-top:0cm;border-bottom:windowtext 1pt solid;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Number of pages read from the data cache.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="background:yellow;mso-highlight:yellow;"&gt;This is the most useful piece of data&lt;/span&gt; provided by the SET STATISTICS IO commands. As you probably know, before SQL Server can do anything with data, that data must be in its data cache. In addition, when SQL Server reads data from the data cache, &lt;span style="background:yellow;mso-highlight:yellow;"&gt;it reads it in 8K pages.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;A logical read is the number of pages SQL Server had to read from the data cache in order to produce the results specified by our query. The exact same number of logical reads will always occur when the same query runs against the exact same data on SQL Server.&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Knowing the number of logical reads that SQL Server takes to execute a query is important because it is the one thing that never changes from one execution to another giving us the perfect reference to use when we are tuning a query to determine if you we are succeeding or failing.&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;background:yellow;font-family:arial;mso-highlight:yellow;"&gt;The fewer the logical reads performed by a query, the more efficient it is, and the faster it will perform, assuming all other things are held equal.&lt;/span&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="mso-yfti-irow:4;"&gt; &lt;td style="border-right:windowtext 1pt solid;padding-right:0cm;border-top:medium none;padding-left:0cm;padding-bottom:0cm;border-left:windowtext 1pt solid;width:90pt;padding-top:0cm;border-bottom:windowtext 1pt solid;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-bidi-font-weight:bold;"&gt;physical reads&lt;/span&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-right:windowtext 1pt solid;padding-right:0cm;border-top:medium none;padding-left:0cm;padding-bottom:0cm;border-left:medium none;width:377.95pt;padding-top:0cm;border-bottom:windowtext 1pt solid;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Number of pages read from disk.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="background:yellow;mso-highlight:yellow;"&gt;This information is not too useful for query tuning&lt;/span&gt;.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;First of all, a physical read refers to when SQL Server must go to disk to get data pages it needs to put into the data cache before it can execute the query. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;As mentioned above, all data must be in the data cache before SQL Server can execute a query. Whenever SQL Server begins to execute a query, the first thing it does is to check and see if the data pages it needs are in the data cache. &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="mso-yfti-irow:5;"&gt; &lt;td style="border-right:windowtext 1pt solid;padding-right:0cm;border-top:medium none;padding-left:0cm;padding-bottom:0cm;border-left:windowtext 1pt solid;width:90pt;padding-top:0cm;border-bottom:windowtext 1pt solid;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-bidi-font-weight:bold;"&gt;read-ahead reads&lt;/span&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-right:windowtext 1pt solid;padding-right:0cm;border-top:medium none;padding-left:0cm;padding-bottom:0cm;border-left:medium none;width:377.95pt;padding-top:0cm;border-bottom:windowtext 1pt solid;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Number of pages placed into the cache for the query.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="background:yellow;mso-highlight:yellow;"&gt;Like physical reads, this information is not too useful for query tuning.&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;This value tells you the number of physical page reads that SQL Server performed as part of its read-ahead mechanism. To help optimize its performance, SQL Server reads physical data pages ahead of when it thinks your queries might need the data. &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="mso-yfti-irow:6;"&gt; &lt;td style="border-right:windowtext 1pt solid;padding-right:0cm;border-top:medium none;padding-left:0cm;padding-bottom:0cm;border-left:windowtext 1pt solid;width:90pt;padding-top:0cm;border-bottom:windowtext 1pt solid;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-bidi-font-weight:bold;"&gt;lob &lt;/span&gt;&lt;span style="font-size:10pt;font-family:arial;mso-bidi-font-weight:bold;mso-ansi-language:fr-ca;"&gt;logical reads&lt;/span&gt;&lt;span style="font-size:10pt;font-family:arial;mso-ansi-language:fr-ca;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-right:windowtext 1pt solid;padding-right:0cm;border-top:medium none;padding-left:0cm;padding-bottom:0cm;border-left:medium none;width:377.95pt;padding-top:0cm;border-bottom:windowtext 1pt solid;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Number of &lt;b&gt;text&lt;/b&gt;, &lt;b&gt;ntext&lt;/b&gt;, &lt;b&gt;image&lt;/b&gt;, or large value type (&lt;b&gt;varchar(max)&lt;/b&gt;, &lt;b&gt;nvarchar(max)&lt;/b&gt;, &lt;b&gt;varbinary(max)&lt;/b&gt;) pages read from the data cache.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="mso-yfti-irow:7;"&gt; &lt;td style="border-right:windowtext 1pt solid;padding-right:0cm;border-top:medium none;padding-left:0cm;padding-bottom:0cm;border-left:windowtext 1pt solid;width:90pt;padding-top:0cm;border-bottom:windowtext 1pt solid;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-bidi-font-weight:bold;mso-ansi-language:fr-ca;"&gt;lob physical reads&lt;/span&gt;&lt;span style="font-size:10pt;font-family:arial;mso-ansi-language:fr-ca;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-right:windowtext 1pt solid;padding-right:0cm;border-top:medium none;padding-left:0cm;padding-bottom:0cm;border-left:medium none;width:377.95pt;padding-top:0cm;border-bottom:windowtext 1pt solid;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Number of &lt;b&gt;text&lt;/b&gt;, &lt;b&gt;ntext&lt;/b&gt;, &lt;b&gt;image&lt;/b&gt; or large value type pages read from disk.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="mso-yfti-irow:8;mso-yfti-lastrow:yes;"&gt; &lt;td style="border-right:windowtext 1pt solid;padding-right:0cm;border-top:medium none;padding-left:0cm;padding-bottom:0cm;border-left:windowtext 1pt solid;width:90pt;padding-top:0cm;border-bottom:windowtext 1pt solid;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-bidi-font-weight:bold;mso-ansi-language:fr-ca;"&gt;lob read-ahead reads&lt;/span&gt;&lt;span style="font-size:10pt;font-family:arial;mso-ansi-language:fr-ca;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-right:windowtext 1pt solid;padding-right:0cm;border-top:medium none;padding-left:0cm;padding-bottom:0cm;border-left:medium none;width:377.95pt;padding-top:0cm;border-bottom:windowtext 1pt solid;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Number of &lt;b&gt;text&lt;/b&gt;, &lt;b&gt;ntext&lt;/b&gt;, &lt;b&gt;image&lt;/b&gt; or large value type pages placed into the cache for the query.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Now for a real example:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;To be honest with you, when you execute a query without a WHERE clause there’s not much you can do to tune a query because the server performs a scan on the table.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Let’s take another example:&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Execute the following code:&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;div style="border-right:medium none;padding-right:0cm;border-top:#c8cdde 1pt solid;padding-left:0cm;background:#dddddd;padding-bottom:0cm;border-left:medium none;padding-top:4pt;border-bottom:medium none;mso-element:para-border-div;mso-border-top-alt:solid #c8cdde .75pt;"&gt;&lt;span style="font-size:9pt;color:#000066;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;"&gt;USE AdventureWorks;&lt;/span&gt;  &lt;p class="MsoNormal" style="border-right:medium none;padding-right:0cm;border-top:medium none;padding-left:0cm;background:#dddddd;margin-bottom:7.5pt;padding-bottom:0cm;vertical-align:top;border-left:medium none;line-height:140%;padding-top:0cm;border-bottom:medium none;mso-border-top-alt:solid #c8cdde .75pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;mso-padding-alt:4.0pt 0cm 0cm 0cm;"&gt;&lt;span style="font-size:9pt;color:#000066;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;"&gt;GO&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right:medium none;padding-right:0cm;border-top:medium none;padding-left:0cm;background:#dddddd;margin-bottom:7.5pt;padding-bottom:0cm;vertical-align:top;border-left:medium none;line-height:140%;padding-top:0cm;border-bottom:medium none;mso-border-top-alt:solid #c8cdde .75pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;mso-padding-alt:4.0pt 0cm 0cm 0cm;"&gt;&lt;span style="font-size:9pt;color:#000066;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;"&gt;SELECT * FROM Person.Contact WHERE firstname=&amp;#39;Carla&amp;#39;;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right:medium none;padding-right:0cm;border-top:medium none;padding-left:0cm;background:#dddddd;margin-bottom:7.5pt;padding-bottom:0cm;vertical-align:top;border-left:medium none;line-height:140%;padding-top:0cm;border-bottom:medium none;mso-border-top-alt:solid #c8cdde .75pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;mso-padding-alt:4.0pt 0cm 0cm 0cm;"&gt;&lt;span style="font-size:9pt;color:#000066;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;"&gt;GO&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Now look at the Message tab:&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;a href="http://sqlprof.com/blogs/sqlserver/WindowsLiveWriter/UnderstandingSETSTATISTICSIOandSETSTATIS_BD7B/clip_image006_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="401" alt="clip_image006" src="http://sqlprof.com/blogs/sqlserver/WindowsLiveWriter/UnderstandingSETSTATISTICSIOandSETSTATIS_BD7B/clip_image006_thumb.jpg" width="508" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Even though we have filtered our query and the elapsed time is down (data is cached), the logical reads are still at 561.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;This means that reading 25 rows is costing us the same as in the previous example that was returning 19972 rows.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;One thing we could do to reduce the number of logical reads is to create an index on firstname (I will cover the creation of index in another article).&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;You can create an index directly in Management Studio by selecting the table in the object explorer and right clicking on the Indexes folder:&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;a href="http://sqlprof.com/blogs/sqlserver/WindowsLiveWriter/UnderstandingSETSTATISTICSIOandSETSTATIS_BD7B/clip_image008_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="370" alt="clip_image008" src="http://sqlprof.com/blogs/sqlserver/WindowsLiveWriter/UnderstandingSETSTATISTICSIOandSETSTATIS_BD7B/clip_image008_thumb.jpg" width="288" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;A new index dialog will appear:&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&lt;a href="http://sqlprof.com/blogs/sqlserver/WindowsLiveWriter/UnderstandingSETSTATISTICSIOandSETSTATIS_BD7B/clip_image010_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="452" alt="clip_image010" src="http://sqlprof.com/blogs/sqlserver/WindowsLiveWriter/UnderstandingSETSTATISTICSIOandSETSTATIS_BD7B/clip_image010_thumb.jpg" width="504" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;Or you can execute the following code:&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;div style="border-right:medium none;padding-right:0cm;border-top:#c8cdde 1pt solid;padding-left:0cm;background:#dddddd;padding-bottom:0cm;border-left:medium none;padding-top:4pt;border-bottom:medium none;mso-element:para-border-div;mso-border-top-alt:solid #c8cdde .75pt;"&gt;&lt;span style="font-size:9pt;color:#000066;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;mso-bidi-font-size:10.0pt;mso-no-proof:yes;"&gt;USE [AdventureWorks]&lt;/span&gt;  &lt;p class="MsoNormal" style="border-right:medium none;padding-right:0cm;border-top:medium none;padding-left:0cm;background:#dddddd;margin-bottom:7.5pt;padding-bottom:0cm;border-left:medium none;line-height:140%;padding-top:0cm;border-bottom:medium none;mso-border-top-alt:solid #c8cdde .75pt;mso-padding-alt:4.0pt 0cm 0cm 0cm;"&gt;&lt;span style="font-size:9pt;color:#000066;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;mso-bidi-font-size:10.0pt;mso-no-proof:yes;"&gt;GO&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right:medium none;padding-right:0cm;border-top:medium none;padding-left:0cm;background:#dddddd;margin-bottom:7.5pt;padding-bottom:0cm;border-left:medium none;line-height:140%;padding-top:0cm;border-bottom:medium none;mso-border-top-alt:solid #c8cdde .75pt;mso-padding-alt:4.0pt 0cm 0cm 0cm;"&gt;&lt;span style="font-size:9pt;color:#000066;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;mso-bidi-font-size:10.0pt;mso-no-proof:yes;"&gt;CREATE NONCLUSTERED INDEX [IDX_firstname] ON [Person].[Contact] &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right:medium none;padding-right:0cm;border-top:medium none;padding-left:0cm;background:#dddddd;margin-bottom:7.5pt;padding-bottom:0cm;border-left:medium none;line-height:140%;padding-top:0cm;border-bottom:medium none;mso-border-top-alt:solid #c8cdde .75pt;mso-padding-alt:4.0pt 0cm 0cm 0cm;"&gt;&lt;span style="font-size:9pt;color:#000066;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;mso-bidi-font-size:10.0pt;mso-no-proof:yes;"&gt;(&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right:medium none;padding-right:0cm;border-top:medium none;padding-left:0cm;background:#dddddd;margin-bottom:7.5pt;padding-bottom:0cm;border-left:medium none;line-height:140%;padding-top:0cm;border-bottom:medium none;mso-border-top-alt:solid #c8cdde .75pt;mso-padding-alt:4.0pt 0cm 0cm 0cm;"&gt;&lt;span style="font-size:9pt;color:#000066;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;mso-bidi-font-size:10.0pt;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[FirstName] ASC&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right:medium none;padding-right:0cm;border-top:medium none;padding-left:0cm;background:#dddddd;margin-bottom:7.5pt;padding-bottom:0cm;border-left:medium none;line-height:140%;padding-top:0cm;border-bottom:medium none;mso-border-top-alt:solid #c8cdde .75pt;mso-padding-alt:4.0pt 0cm 0cm 0cm;"&gt;&lt;span style="font-size:9pt;color:#000066;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;mso-bidi-font-size:10.0pt;mso-no-proof:yes;"&gt;)&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="border-right:medium none;padding-right:0cm;border-top:medium none;padding-left:0cm;background:#dddddd;margin-bottom:7.5pt;padding-bottom:0cm;border-left:medium none;line-height:140%;padding-top:0cm;border-bottom:medium none;mso-border-top-alt:solid #c8cdde .75pt;mso-padding-alt:4.0pt 0cm 0cm 0cm;"&gt;&lt;span style="font-size:9pt;color:#000066;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;mso-bidi-font-size:10.0pt;mso-no-proof:yes;"&gt;GO&lt;/span&gt;&lt;span style="font-size:10pt;line-height:140%;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-no-proof:yes;"&gt;Either way, you will achieve the same result.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Now re-execute the query and look at the message tab:&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-no-proof:yes;"&gt;&lt;a href="http://sqlprof.com/blogs/sqlserver/WindowsLiveWriter/UnderstandingSETSTATISTICSIOandSETSTATIS_BD7B/clip_image012_2.jpg"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="418" alt="clip_image012" src="http://sqlprof.com/blogs/sqlserver/WindowsLiveWriter/UnderstandingSETSTATISTICSIOandSETSTATIS_BD7B/clip_image012_thumb.jpg" width="456" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-no-proof:yes;"&gt;Now that is quite an improvement…&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-no-proof:yes;"&gt;Hope this was useful, feel free to post any comments.&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-no-proof:yes;"&gt;Eric&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:86bb841f-5c0d-49d6-8d85-4390b3bc3d5b" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati : &lt;a href="http://technorati.com/tags/SET%20STATISTICS%20IO" rel="tag"&gt;SET STATISTICS IO&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SET%20STATISTICS%20TIME" rel="tag"&gt;SET STATISTICS TIME&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Tuning" rel="tag"&gt;Tuning&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL%20Server" rel="tag"&gt;SQL Server&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Performance" rel="tag"&gt;Performance&lt;/a&gt;&lt;/div&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;</description></item></channel></rss>