<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" version="2.0">
  <channel>
    <title>Kimberly L. Tripp</title>
    <description>Improving *my* SQL skills through your questions!</description>
    <link>http://www.sqlskills.com/BLOGS/KIMBERLY/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.4.5.0</generator>
    <language>en-US</language>
    <blogChannel:blogRoll>http://www.sqlskills.com/BLOGS/KIMBERLY/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.sqlskills.com/</blogChannel:blink>
    <dc:creator>Kimberly L. Tripp</dc:creator>
    <dc:title>Kimberly L. Tripp</dc:title>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/KimberlyLTripp" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="kimberlyltripp" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">KimberlyLTripp</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
      <title>Data Dude moving into lower priced VS Editions in VS 2010 - excellent!</title>
      <description>&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Data Dude (Visual Studio &amp;quot;DBPro&amp;quot;) has generally been an expensive tool - only in the &amp;quot;Team Systems&amp;quot; Edition of Visual Studio. But, that&amp;#39;s all going to change in VS 2010. Here&amp;#39;s a picture of the new editions and which components of Data Dude are where: &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;&lt;img style="width: 829px; height: 464px" src="http://www.sqlskills.com/BLOGS/KIMBERLY/image.axd?picture=2009%2f11%2fDatabase+Features+in+Visual+Studio+Versions.jpg" alt="" width="812" height="345" /&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;This is a HUGE improvement (after the clarification isn&amp;#39;t not quite as huge but still VERY useful that the tools are in different editions) and is going to allow many of you to use/leverage these key features (such as Data Generation and Static Code Analysis - those are some of my favorites :)) in smaller shops - without having to purchase the full-on Team Systems Edition of VS. If you&amp;#39;re interested in more info - check out the following: &lt;/font&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;a href="http://www.dougseven.com/blog/" target="_blank"&gt;&lt;font face="verdana,geneva" size="2"&gt;Doug Seven&amp;#39;s&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt; &lt;/font&gt;&lt;a href="http://www.dotnetrocks.com/" target="_blank"&gt;&lt;font face="verdana,geneva" size="2"&gt;DotNetRocks&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt; interview here: &lt;/font&gt;&lt;a id="ctl00_ContentPlaceHolder1_hlShowTitle" href="http://www.dotnetrocks.com/default.aspx?showNum=493" target="_blank"&gt;&lt;font face="verdana,geneva" size="2"&gt;Doug Seven on Visual Studio 2010&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt;. &lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font size="+0"&gt;&lt;font size="+0"&gt;&lt;font size="+0"&gt;&lt;font size="+0"&gt;&lt;font face="verdana,geneva" size="2"&gt;The VS2010 team blog here: &lt;/font&gt;&lt;a href="http://blogs.msdn.com/vstsdb/archive/2009/10/19/what-s-new-for-data-dude-in-visual-studio-2010.aspx"&gt;&lt;font face="verdana,geneva" size="2" color="#0000ff"&gt;http://blogs.msdn.com/vstsdb/archive/2009/10/19/what-s-new-for-data-dude-in-visual-studio-2010.aspx&lt;/font&gt;&lt;/a&gt;&lt;/font&gt;&lt;font face="verdana,geneva" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font size="+0"&gt;&lt;font size="+0"&gt;&lt;font size="+0"&gt;&lt;font size="2"&gt;&lt;font face="verdana,geneva"&gt;&lt;font size="+0"&gt;&lt;font size="+0"&gt;&lt;span style="font-family: 'Calibri','sans-serif'; font-size: 11pt"&gt;Microsoft Visual Studio 2010 webpage - and where you can download the latest beta (Beta 2): &lt;font size="+0"&gt;&lt;a href="http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx"&gt;http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx&lt;/a&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;font size="3"&gt;&lt;strong&gt;CLARIFICATION!!&lt;/strong&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;span style="color: #1f497d"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;In 2010 &amp;ldquo;Team System&amp;rdquo; goes away (as a brand), and it&amp;#39;s been replaced with VS 2010 Ultimate and Premium (VS Pro is still there). Basically VS Premium is similar to VSTS Development Edition + Database Edition (and is priced the same). Ultimate is similar to Team Suite.&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;span style="color: #1f497d"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;The functionality didn&amp;#39;t really move down the product line (or the price point), the big different is that there&amp;#39;s more than only DB Pro tooling in there now!&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
	&lt;/p&gt;
	&lt;span style="color: #1f497d"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&lt;/span&gt;
	&lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;
	&lt;span style="color: #1f497d"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
	&lt;/p&gt;
	&lt;p style="margin: 0in 0in 0pt" class="MsoNormal"&gt;
	&lt;span style="color: #1f497d"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Thanks to Doug &amp;quot;D7&amp;quot; Seven&amp;nbsp;for setting me straight!&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;font size="+0"&gt;&lt;font size="+0"&gt;&lt;font size="+0"&gt;&lt;font size="+0"&gt;&lt;font size="2"&gt;&lt;font face="verdana,geneva"&gt;&lt;strong&gt;Enjoy!&lt;/strong&gt;&lt;br /&gt;
kt&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=DVwIIySXom4:HEVZbdlWNTM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=DVwIIySXom4:HEVZbdlWNTM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=DVwIIySXom4:HEVZbdlWNTM:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?i=DVwIIySXom4:HEVZbdlWNTM:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=DVwIIySXom4:HEVZbdlWNTM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <link>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Data-Dude-moving-into-lower-priced-VS-Editions-in-VS-2010-excellent!.aspx</link>
      <author>kimberly.nospam@nospam.sqlskills.com (kltripp)</author>
      <comments>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Data-Dude-moving-into-lower-priced-VS-Editions-in-VS-2010-excellent!.aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=421856f7-e599-44f6-89b1-2a336018ce91</guid>
      <pubDate>Wed, 18 Nov 2009 18:47:00 -0800</pubDate>
      <category>Tips</category>
      <category>VS DBPro</category>
      <dc:publisher>kltripp</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/KIMBERLY/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=421856f7-e599-44f6-89b1-2a336018ce91</pingback:target>
      <slash:comments>23</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/KIMBERLY/trackback.axd?id=421856f7-e599-44f6-89b1-2a336018ce91</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Data-Dude-moving-into-lower-priced-VS-Editions-in-VS-2010-excellent!.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/KIMBERLY/syndication.axd?post=421856f7-e599-44f6-89b1-2a336018ce91</wfw:commentRss>
    </item>
    <item>
      <title>Travel tips - tagged by Kevin!</title>
      <description>&lt;p&gt;
&lt;font size="+0"&gt;&lt;font size="2"&gt;This is a bit overdue as &lt;/font&gt;&lt;a href="http://kevinekline.com/" target="_blank"&gt;&lt;font size="2"&gt;Kevin Kline&lt;/font&gt;&lt;/a&gt;&lt;font size="+0"&gt;&lt;font size="2"&gt; tagged me in a &lt;/font&gt;&lt;a href="http://kevinekline.com/2009/10/25/starting-the-travel-tips-meme/" target="_blank"&gt;&lt;font size="2"&gt;meme&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;&amp;nbsp;post to help people get ready for their travel to PASS. However, we were too busy with travel (we were in Australia at the time) to get to it. And, while this year&amp;#39;s PASS has past, it&amp;#39;s not too late for travel in general OR for next year! I suspect that a few folks are already planning for PASS, or Connections, or other business travel! So, here we go - my travel recommendations/tips.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;font size="+0"&gt;&lt;font size="2"&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 12pt"&gt;Travel tips:&lt;/span&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt;&lt;/span&gt;&lt;/font&gt; 
&lt;ul&gt;
	&lt;li class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; tab-stops: list .5in"&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt;&lt;font size="2"&gt;Join the frequent flyer program even if you&amp;#39;re not a frequent flyer. As long as you travel within another 12 months (and sometimes even longer) your miles won&amp;#39;t expire... Miles (for upgrades or free tickets) are always good :) and even if you&amp;#39;re only a 2 or 3 times a year flyer - they&amp;#39;ll add up (again, as long as you keep traveling).&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;
	&lt;li class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; tab-stops: list .5in"&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt;&lt;font size="2"&gt;Try to pick an airline and stick with it. The more you fly, the higher the bonuses. In fact, I&amp;#39;m so focused on flying just one airline that I&amp;#39;ll often fly two flights (for example, SEA -&amp;gt; DEN, DEN-&amp;gt;MCO [Orlando]) even when another airline (like American) has a direct SEA-&amp;gt;MCO. This happens more than I would like but it also means that I get things like extra bonuses as the end of the year. For example, as I hit each 25K after 100K (ah, I really do fly *A LOT*), I get 2 extra systemwide upgrades. These allow me to upgrade (at the time of booking) for any international flight from departure to destination. So, I can upgrade SEA-&amp;gt;MEL (even though that&amp;#39;s actually SEA-&amp;gt;LAX, LAX-&amp;gt;SYD and SYD-&amp;gt;MEL). But, systemwides are only given at the highest levels... so, you really have to fly a lot and you MUST stick with the same airline. My airline of choice: &lt;/font&gt;&lt;a href="http://www.united.com/" target="_blank"&gt;&lt;span style="color: blue"&gt;&lt;font size="2"&gt;United&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size="2"&gt;. Also, to help you earn points faster - be sure to check the airline promotions REGULARLY. For example, many airlines offered a &amp;quot;double your EQM (Elite Qualifying Miles)&amp;quot; for Sept to Dec flight... all solely for registering. This might get you to the next level with little work! Here&amp;#39;s United&amp;#39;s page on promotions: &lt;a href="http://www.united.com/page/article/1,,52102,00.html?navSource=Dropdown07&amp;amp;linkTitle=earnmiles"&gt;http://www.united.com/page/article/1,,52102,00.html?navSource=Dropdown07&amp;amp;linkTitle=earnmiles&lt;/a&gt;. &lt;/font&gt;&lt;/span&gt;&lt;/li&gt;
	&lt;li class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; tab-stops: list .5in"&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt;&lt;font size="2"&gt;When you book, start by doing some research online. Try general travel sites (&lt;/font&gt;&lt;a href="http://www.expedia.com/" target="_blank"&gt;&lt;span style="color: blue"&gt;&lt;font size="2"&gt;Expedia&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;a href="http://www.travelocity.com/" target="_blank"&gt;&lt;span style="color: blue"&gt;&lt;font size="2"&gt;Travelocity&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size="2"&gt;, etc.) first but be sure to check the specific airlines as well. And, you *might* need to get creative if your itinerary is messy. Paul and I recently had to travel to Dublin and then Warsaw on the same trip but when we booked the entire set of flights the tickets were OUT OF CONTROL expensive. We ended up booking&amp;nbsp;SEA-&amp;gt;DUB and then WAW-&amp;gt;SEA (it&amp;#39;s called an open jaw) and&amp;nbsp;we saved over 60% (no, I&amp;#39;m NOT kidding). Now, don&amp;#39;t get me wrong - we spent something like 5 hours coming up with different options/combinations both online and on the phone. And, in many cases this kind of thing costs more not less so it can get tricky; it really isn&amp;#39;t all that common but &lt;strong&gt;&lt;em&gt;can &lt;/em&gt;&lt;/strong&gt;really help. One thing of which to be aware&amp;nbsp;is that connecting flights on a different ticket may cause you A LOT of grief (even though they can save you $$$). If your final destination if DUB and you purchase one RT ticket (let&amp;#39;s say SEA to LHR) and then a separate RT ticket LHR to DUB but you plan to connect in LHR to fly immediately to DUB... some airlines/partners do NOT allow the baggage to be checked all the way through - this means that you&amp;#39;ll need to pick up baggage in LHR and check-in again (and since this is international - it means going through customs/immigration). What this means is that you&amp;#39;ll need more time (so pick those connections with 2-3 hours - maybe more). And, if there are any delays, etc. you won&amp;#39;t be a high priority for them... this is where it can get messy. But, I have to admit this is something I do OFTEN. I always *try* to fly on partner airlines (meaning &lt;/font&gt;&lt;a href="http://www.staralliance.com/en/" target="_blank"&gt;&lt;span style="color: blue"&gt;&lt;font size="2"&gt;Star Alliance&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size="2"&gt;) as I have &amp;quot;Gold&amp;quot; privileges BUT, this doesn&amp;#39;t always help (when checking in). However, it can help while en route. Again, fly the same airline/group and it does have its benefits.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;
	&lt;li class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; tab-stops: list .5in"&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt;&lt;font size="2"&gt;Seats &amp;ndash; when you book, try and get your seats assigned. And, be sure to check out your seat on SeatGuru (&lt;a href="http://www.seatguru.com/"&gt;http://www.SeatGuru.com&lt;/a&gt;). If you book online (which can often offer discounts) be sure to follow up by calling the specific airline to get your seats assigned. In fact, if the price isn&amp;rsquo;t all that much better you might be MUCH better off using the specific company&amp;rsquo;s website and/or phone system so that you CAN get your seats assigned. And, in the worst case, if you can&amp;rsquo;t get your seats assigned &amp;ndash; get to the airport EARLY (really target the 1.5-2 hour rule) and then be VERY nice to the folks that check you in&amp;hellip; see if you can get an exit row or bulk head. Hmmmm, bulkhead seating is debatable. On some planes, bulkhead &lt;/font&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 12pt"&gt;&lt;font size="+0"&gt;Getting ready for travel:&lt;/font&gt;&lt;/span&gt; 
&lt;ul&gt;
	&lt;li class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; tab-stops: list .5in"&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt;&lt;font size="2"&gt;A couple of weeks prior &amp;ndash; go through all of your dates and itineraries and double-check everything. Once, I arrived at an airport for a flight and I had been booked on the wrong day. I remember the phone call well &amp;ndash; I had been going back/forth about specific dates (and costs) and in the end, my E-ticket was wrong. Had I double-checked it, it wouldn&amp;rsquo;t have been a problem&amp;hellip; Luckily, seats were available and all was well (and, I had elite status) otherwise, it could have been a nightmare!&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;
	&lt;li class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; tab-stops: list .5in"&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt;&lt;font size="2"&gt;Is there anything special you&amp;rsquo;re taking? Does it need to make it to the cleaner, etc.? Are you going to remember to pick it up in time? Really, planning a bit for this is important. I&amp;rsquo;ve forgotten to go to the cleaner the night before a trip only to realize that my flight is so early that I can&amp;rsquo;t even stop on the way to the airport. Now I need to go to plan b. This is why Paul creates a comprehensive &amp;ldquo;Pack List&amp;rdquo; and he&amp;rsquo;s got it online. When he thinks of something he wants to take on a trip, he updates this doc. Then, the day before he packs &amp;ndash; he double-checks it, prints it and then starts packing. I&amp;rsquo;m pretty good at remembering most things so I haven&amp;rsquo;t done this but I have forgotten a few things over the years and travels. So, I&amp;rsquo;d really recommend this and I&amp;rsquo;m probably going to do this moving forward too!&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 12pt"&gt;&lt;font size="+0"&gt;Making the travel less painful:&lt;/font&gt;&lt;/span&gt; 
&lt;ul&gt;
	&lt;li class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; tab-stops: list .5in"&gt;&lt;font size="2"&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt;&lt;strong&gt;Sleeping. &lt;/strong&gt;Does melatonin work for you? Or, have you even tried it? If you&amp;rsquo;re crossing many time zones, you might want to pick up a bottle of this. It&amp;rsquo;s an anti-stress/herbal sleep aid and taking it right before bedtime might help you sleep better and adjust more quickly. &lt;/span&gt;&lt;/font&gt;&lt;/li&gt;
	&lt;li class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; tab-stops: list .5in"&gt;&lt;font size="2"&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt;Sinus rinse.&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt; I swear by this and I honestly think this helps me avoid getting sick on some flights. I rinse my sinuses twice daily regardless of travel but given that you&amp;rsquo;re traveling with so many other folks and breathing recycled air &amp;ndash; rinsing your sinuses can&amp;rsquo;t hurt. And, you might want to pick up some saline solution for in-flight moisture. Here&amp;#39;s a link for the specific sinus rinse I recommend: &lt;a href="http://www.neilmed.com/usa/products.php#isotonic"&gt;http://www.neilmed.com/usa/products.php#isotonic&lt;/a&gt;. And, they have a nasal moisturizer as well: &lt;a href="http://www.neilmed.com/usa/products.php#nasogel"&gt;http://www.neilmed.com/usa/products.php#nasogel&lt;/a&gt;. &lt;/span&gt;&lt;/font&gt;&lt;/li&gt;
	&lt;li class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; tab-stops: list .5in"&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt;Flight socks.&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt; Honestly, I just recently found out about these and I LOVE them. My feet can swell up a bit while flying (I just recently had foot surgery) and now, I wear these even for shorter flights.&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;
	&lt;li class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; tab-stops: list .5in"&gt;&lt;font size="2"&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt;&lt;strong&gt;Slippers. &lt;/strong&gt;Yes, I actually travel with wool slippers. Seriously, I get cold...really cold... And, when I travel with these they make a HUGE difference. Especially for long haul flights. These aren&amp;#39;t hard slippers - more like thick socks (easy to pack).&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;
	&lt;li class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; tab-stops: list .5in"&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt;Snack.&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt; Even if you do get an upgrade &amp;ndash; having a snack with you might make an otherwise hungry time a lot more bearable.&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;
	&lt;li class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; tab-stops: list .5in"&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt;Water.&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt; I buy water in the airport prior to boarding so that I&amp;rsquo;m never without. Flying can be very dehydrating and that will only help you get sick. &lt;/span&gt;&lt;/font&gt;&lt;/li&gt;
	&lt;li class="MsoNormal" style="line-height: normal; margin: 0in 0in 10pt; tab-stops: list .5in"&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt;Entertainment.&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt; Have something ready for you to read, watch, work-on&amp;hellip; whatever. This is always my excuse to buy the trashy mags at the airport before I board. However, I have to admit that I know fewer and fewer of the stars referenced. Not sure how I&amp;rsquo;m supposed to feel about that?! &lt;/span&gt;&lt;span style="font-family: Wingdings; font-size: 8.5pt"&gt;&lt;span&gt;J&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 8.5pt"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;
&lt;font face="verdana,geneva" size="2"&gt;Well&amp;hellip; I&amp;rsquo;ll plan to come back to this and update it with other tips/tricks as I think about them! &lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;
&lt;font face="verdana,geneva" size="2"&gt;Safe &amp;ndash; and happy &amp;ndash; travels to all! And, I look forward to seeing you at an event sometime soon&amp;hellip;if not, at PASS, or Connections again next year.&lt;/font&gt; 
&lt;/p&gt;
&lt;p style="margin: 0in 0in 10pt" class="MsoNormal"&gt;
&lt;font face="Calibri"&gt;&lt;strong&gt;Thanks for reading!&lt;br /&gt;
&lt;/strong&gt;kt&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=OVgv3q4o8UI:78yTI0lqX1Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=OVgv3q4o8UI:78yTI0lqX1Y:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=OVgv3q4o8UI:78yTI0lqX1Y:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?i=OVgv3q4o8UI:78yTI0lqX1Y:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=OVgv3q4o8UI:78yTI0lqX1Y:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <link>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Travel-tips-tagged-by-Kevin!.aspx</link>
      <author>kimberly.nospam@nospam.sqlskills.com (kltripp)</author>
      <comments>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Travel-tips-tagged-by-Kevin!.aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=2fd38d57-5634-482c-8073-1cf9199d4836</guid>
      <pubDate>Tue, 17 Nov 2009 07:28:00 -0800</pubDate>
      <category>Conferences</category>
      <category>Opinions</category>
      <dc:publisher>kltripp</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/KIMBERLY/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=2fd38d57-5634-482c-8073-1cf9199d4836</pingback:target>
      <slash:comments>9</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/KIMBERLY/trackback.axd?id=2fd38d57-5634-482c-8073-1cf9199d4836</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Travel-tips-tagged-by-Kevin!.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/KIMBERLY/syndication.axd?post=2fd38d57-5634-482c-8073-1cf9199d4836</wfw:commentRss>
    </item>
    <item>
      <title>Interviews with MidnightDBA are posted</title>
      <description>&lt;p&gt;
&lt;font size="2"&gt;At PASS we hung out with &lt;/font&gt;&lt;a href="http://www.infoworld.com/blogs/sean-mccown" target="_blank"&gt;&lt;font size="2"&gt;Sean McCown&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; and Jen McCown (of &lt;/font&gt;&lt;a href="http://midnightdba.itbookworm.com/" target="_blank"&gt;&lt;font size="2"&gt;MidnightDBA&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;)&amp;nbsp;and chatted... and, despite our better judgement, it was recorded. ;-) These aren&amp;#39;t overly technical but they are fun! Enjoy!! &lt;/font&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font size="2"&gt;Part 1 of 2: &lt;/font&gt;&lt;a href="http://midnightdba.itbookworm.com/VidPages/DBAsAtMidnightTripps1of2/DBAsAtMidnightTripps1of2.aspx"&gt;&lt;font size="2"&gt;http://midnightdba.itbookworm.com/VidPages/DBAsAtMidnightTripps1of2/DBAsAtMidnightTripps1of2.aspx&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; &lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font size="2"&gt;Part 2 of 2: &lt;/font&gt;&lt;a href="http://midnightdba.itbookworm.com/VidPages/DBAsAtMidnightTripps2of2/DBAsAtMidnightTripps2of2.aspx"&gt;&lt;font size="2"&gt;http://midnightdba.itbookworm.com/VidPages/DBAsAtMidnightTripps2of2/DBAsAtMidnightTripps2of2.aspx&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; &lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;font size="2"&gt;And, our favorite &amp;quot;travel tip&amp;quot; from the video is to know your plane and check your seat on &lt;/font&gt;&lt;a href="http://www.seatguru.com/"&gt;&lt;font size="2"&gt;http://www.seatguru.com/&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;. In fact, I have a few other travel tips and I&amp;#39;m overdue on a &lt;/font&gt;&lt;a href="http://kevinekline.com/2009/10/25/starting-the-travel-tips-meme/" target="_blank"&gt;&lt;font size="2"&gt;meme&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; that &lt;/font&gt;&lt;a href="http://kevinekline.com/" target="_blank"&gt;&lt;font size="2"&gt;Kevin Kline&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; tagged me in so I&amp;#39;ll post that shortly as well. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;Enjoy!&lt;br /&gt;
kt &lt;/font&gt;
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=5n-xj0cFabk:0bVABzwzwYY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=5n-xj0cFabk:0bVABzwzwYY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=5n-xj0cFabk:0bVABzwzwYY:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?i=5n-xj0cFabk:0bVABzwzwYY:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=5n-xj0cFabk:0bVABzwzwYY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <link>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Interviews-with-MidnightDBA-are-posted.aspx</link>
      <author>kimberly.nospam@nospam.sqlskills.com (kltripp)</author>
      <comments>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Interviews-with-MidnightDBA-are-posted.aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=327ebf6b-fded-4407-a6df-4bd2c71656d5</guid>
      <pubDate>Mon, 16 Nov 2009 15:47:00 -0800</pubDate>
      <category>Interviews</category>
      <category>Resources</category>
      <dc:publisher>kltripp</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/KIMBERLY/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=327ebf6b-fded-4407-a6df-4bd2c71656d5</pingback:target>
      <slash:comments>10</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/KIMBERLY/trackback.axd?id=327ebf6b-fded-4407-a6df-4bd2c71656d5</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Interviews-with-MidnightDBA-are-posted.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/KIMBERLY/syndication.axd?post=327ebf6b-fded-4407-a6df-4bd2c71656d5</wfw:commentRss>
    </item>
    <item>
      <title>SQL Server MVP Deep Dives (book for charity)</title>
      <description>&lt;p&gt;
&lt;a href="http://www.sqlservermvpdeepdives.com/" target="_blank"&gt;&lt;img style="width: 239px; height: 299px" src="http://www.sqlskills.com/BLOGS/KIMBERLY/image.axd?picture=2009%2f11%2fMVP+Book+-+small.jpg" alt="" width="219" height="296" align="left" /&gt;&lt;/a&gt;&lt;font size="2"&gt;Well... it&amp;#39;s finally been released and last week was the book launch. This book came together first as a goal by &lt;/font&gt;&lt;a href="http://sqlblog.com/blogs/paul_nielsen/default.aspx" target="_blank"&gt;&lt;font size="2"&gt;Paul Nielsen&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; who was motivated by Steve Ballmer&amp;#39;s request that MVPs &amp;quot;give back&amp;quot; even more and even outside of the direct technical community. Paul had the idea of a book - written for charity - and contributed to by MVPs. Well, here it is! &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;The book contains content from 53 MVPs with &lt;/font&gt;&lt;a href="http://sqlblog.com/blogs/paul_nielsen/default.aspx" target="_blank"&gt;&lt;font size="2"&gt;Paul Nielsen&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;a href="http://sqlblog.com/blogs/kalen_delaney/default.aspx" target="_blank"&gt;&lt;font size="2"&gt;Kalen Delaney&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;a href="http://sqlblog.com/blogs/greg_low/default.aspx" target="_blank"&gt;&lt;font size="2"&gt;Greg Low&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;a href="http://sqlblog.com/blogs/adam_machanic/" target="_blank"&gt;&lt;font size="2"&gt;Adam Machanic&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;a href="http://www.SQLskills.com/blogs/Paul" target="_blank"&gt;&lt;font size="2"&gt;Paul S. Randal&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; and I as editors. It was great fun going through all of the content and we&amp;#39;re really happy that it&amp;#39;s now available!&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;To purchase, click on the book (to the left) and purchase directly from Manning. When purchased through Manning a larger amount of the proceeds go to WarChild.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;Finally, many of us were able to get together at PASS and &amp;quot;launch&amp;quot; the book. We gathered around a long table and people (if interested) had their copies signed. It was great fun! When it was all done - we took the group shot below. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;Thanks for a great week (to all that were at PASS) and for great fun working on this title!&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;&lt;strong&gt;UPDATE November 16, 2009:&lt;/strong&gt; After a few comments, I realized that a few people were tagged incorrectly in my facebook post of this photo and as a result, I had a few names switched around too. So, I just completely started over again and double-checked all the names... Also, I&amp;#39;ve added links to their websites so you can find out more information about the authors and editors of this title. Finally, I added that purchases should be made through the Manning website instead of other sites (so that more money goes to WarChild). And, finally, I added the entire chapter list with as many links as possible to everyone&amp;#39;s websites. I&amp;#39;ll keep this up-to-date as folks send me corrected lnks, etc. &lt;strong&gt;ENJOY!!&lt;/strong&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font size="3"&gt;Present for the photo&lt;/font&gt;&lt;/strong&gt; 
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;font size="2"&gt;&lt;strong&gt;Front row starting from the left: &lt;/strong&gt;&lt;a href="http://sqlblog.com/blogs/louis_davidson/default.aspx" target="_blank"&gt;Louis Davidson&lt;/a&gt;,&amp;nbsp;&lt;a href="http://sqlblog.com/blogs/andy_leonard/default.aspx" target="_blank"&gt;Andy Leonard&lt;/a&gt;, &lt;a href="http://arcanecode.com/about/" target="_blank"&gt;Robert C. Cain&lt;/a&gt;, &lt;a href="http://sqlblog.com/blogs/paul_nielsen/default.aspx" target="_blank"&gt;Paul Nielsen&lt;/a&gt;, &lt;a href="http://twitter.com/SQLSocialite" target="_blank"&gt;Scott Stauffer&lt;/a&gt;, &lt;a href="http://online.appdev.com/edge/blogs/donkiely/default.aspx" target="_blank"&gt;Don Kiely&lt;/a&gt;, &lt;a href="http://sqlblog.com/blogs/erin_welker/default.aspx" target="_blank"&gt;Erin Welker&lt;/a&gt;, &lt;a href="http://sqlblog.com/blogs/kevin_kline/" target="_blank"&gt;Kevin Edward Kline&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;
	&lt;li&gt;&lt;font size="2"&gt;&lt;strong&gt;Second row starting from the left: &lt;/strong&gt;&lt;a href="http://sqlblog.com/blogs/greg_low/default.aspx" target="_blank"&gt;Greg Low&lt;/a&gt;, &lt;a href="http://glennberrysqlperformance.spaces.live.com/blog/" target="_blank"&gt;Glenn Berry&lt;/a&gt;, &lt;a href="http://bradmcgehee.com/" target="_blank"&gt;Brad McGehee&lt;/a&gt;, &lt;a href="http://sqlinthewild.co.za/" target="_blank"&gt;Gail Shaw&lt;/a&gt;, &lt;a href="http://sqlblog.com/blogs/kalen_delaney/default.aspx" target="_blank"&gt;&lt;font size="2"&gt;Kalen Delaney&lt;/font&gt;&lt;/a&gt;, &lt;a href="http://www.sommarskog.se/" target="_blank"&gt;Erland Sommarskog&lt;/a&gt;, &lt;a href="http://sqlblog.com/blogs/allen_white/default.aspx" target="_blank"&gt;Allen White&lt;/a&gt;, Kimberly L. Tripp, &lt;a href="http://sqlblog.com/blogs/adam_machanic/" target="_blank"&gt;&lt;font size="2"&gt;Adam Machanic&lt;/font&gt;&lt;/a&gt;, &lt;a href="http://blogs.solidq.com/EN/dsarka/default.aspx" target="_blank"&gt;Dejan Sarka&lt;/a&gt;, &lt;a href="http://sqlblog.com/blogs/john_paul_cook/default.aspx" target="_blank"&gt;John Paul Cook&lt;/a&gt;&amp;nbsp; &lt;/font&gt;&lt;/li&gt;
	&lt;li&gt;&lt;font size="2"&gt;&lt;strong&gt;Third row starting from the left:&lt;/strong&gt; &lt;a href="http://www.webbtechsolutions.com/blog" target="_blank"&gt;Joe Webb&lt;/a&gt;, &lt;a href="http://www.SQLskills.com/blogs/Paul" target="_blank"&gt;&lt;font size="2"&gt;Paul S. Randal&lt;/font&gt;&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="text-align: center"&gt;
&lt;img src="http://www.sqlskills.com/BLOGS/KIMBERLY/image.axd?picture=2009%2f11%2fSQLServerMVPDeepDives+-+small.jpg" alt="" /&gt; 
&lt;/div&gt;
&lt;div align="left" style="text-align: center"&gt;
&lt;font size="2"&gt;&lt;/font&gt;
&lt;/div&gt;
&lt;div align="left" style="text-align: center"&gt;
&lt;font size="3"&gt;Here&amp;#39;s the full chapter list from the book - along with links to the authors/editors websites: &lt;/font&gt;
&lt;/div&gt;
&lt;table border="0" cellspacing="0" cellpadding="5"&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td valign="top"&gt;
			&lt;p&gt;
			&lt;font size="2"&gt;&lt;strong&gt;&lt;font size="3"&gt;PART I &lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;
			&lt;/p&gt;
			&lt;p&gt;
			&lt;font size="2"&gt;&lt;strong&gt;&lt;font size="3"&gt;DATABASE DESIGN AND ARCHITECTURE&lt;br /&gt;
			&lt;em&gt;&lt;a href="http://sqlblog.com/blogs/paul_nielsen/default.aspx" target="_blank"&gt;&lt;em&gt;Paul Nielsen&lt;/em&gt;&lt;/a&gt;, Editor&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt; &lt;br /&gt;
			&lt;strong&gt;&amp;nbsp;1.&lt;/strong&gt; Louis and Paul&amp;#39;s 10 relational database design rules &lt;em&gt;by &lt;/em&gt;&lt;/font&gt;&lt;a href="http://sqlblog.com/blogs/paul_nielsen/default.aspx" target="_blank"&gt;&lt;font size="2"&gt;&lt;em&gt;Paul Nielsen&lt;/em&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;&lt;em&gt; and &lt;/em&gt;&lt;/font&gt;&lt;a href="http://sqlblog.com/blogs/louis_davidson/default.aspx" target="_blank"&gt;&lt;font size="2"&gt;&lt;em&gt;Louis Davidson&lt;/em&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;&lt;em&gt;&amp;nbsp;&lt;br /&gt;
			&lt;/em&gt;&lt;strong&gt;&amp;nbsp;2.&lt;/strong&gt; SQL Server tools for maintaining data integrity &lt;em&gt;by &lt;/em&gt;&lt;a href="http://sqlblog.com/blogs/louis_davidson/default.aspx" target="_blank"&gt;&lt;font size="2"&gt;&lt;em&gt;Louis Davidson&lt;/em&gt;&lt;/font&gt;&lt;/a&gt;&lt;em&gt; &lt;/em&gt;&lt;br /&gt;
			&lt;strong&gt;3.&lt;/strong&gt; Finding functional dependencies &lt;em&gt;by &lt;a href="http://sqlblog.com/blogs/hugo_kornelis/default.aspx" target="_blank"&gt;Hugo Kornelis&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;/font&gt;
			&lt;/p&gt;
			&lt;font size="2"&gt;
			&lt;p&gt;
			&lt;br /&gt;
			&lt;font size="2"&gt;&lt;strong&gt;&lt;font size="3"&gt;PART II &lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;
			&lt;/p&gt;
			&lt;/font&gt;
			&lt;p&gt;
			&lt;font size="2"&gt;&lt;strong&gt;&lt;font size="3"&gt;DATABASE DEVELOPMENT&lt;br /&gt;
			&lt;/font&gt;&lt;/strong&gt;&lt;a href="http://sqlblog.com/blogs/adam_machanic/" target="_blank"&gt;&lt;strong&gt;&lt;em&gt;&lt;font size="3"&gt;Adam Machanic&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;strong&gt;&lt;em&gt;, Editor&lt;/em&gt;&lt;/strong&gt; &lt;br /&gt;
			&lt;/font&gt;&lt;strong&gt;4.&lt;/strong&gt; Set-based iteration: the third alternative &lt;em&gt;by &lt;/em&gt;&lt;a href="http://sqlblog.com/blogs/hugo_kornelis/default.aspx" target="_blank"&gt;&lt;em&gt;Hugo Kornelis&lt;/em&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;
			&lt;strong&gt;5.&lt;/strong&gt; Gaps and islands &lt;em&gt;by &lt;a href="http://www.solidq.com/insidetsql/" target="_blank"&gt;Itzik Ben-Gan&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;6.&lt;/strong&gt; Error handling in SQL Server and applications &lt;em&gt;by &lt;a href="http://www.sqlteam.com/author/bill-graziano" target="_blank"&gt;Bill Graziano&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;7.&lt;/strong&gt; Pulling apart the FROM clause &lt;em&gt;by &lt;a href="http://msmvps.com/blogs/robfarley/archive/tags/sql/default.aspx" target="_blank"&gt;Rob Farley&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;8.&lt;/strong&gt; What makes a bulk insert a minimally logged operation? &lt;em&gt;by &lt;a href="http://sqlblog.com/blogs/denis_gobo/default.aspx" target="_blank"&gt;Denis Gobo&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;9.&lt;/strong&gt; Avoiding three common query mistakes &lt;em&gt;by &lt;a href="http://www.sqlservercentral.com/blogs/kathi_kellenberger/default.aspx" target="_blank"&gt;Kathi Kellenberger&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;10.&lt;/strong&gt; Introduction to XQuery on SQL Server &lt;em&gt;by &lt;a href="http://sqlblog.com/blogs/michael_coles/default.aspx" target="_blank"&gt;Michael Coles&lt;/a&gt; &lt;/em&gt;&lt;br /&gt;
			&lt;strong&gt;11.&lt;/strong&gt; SQL Server XML frequently asked questions &lt;em&gt;by &lt;a href="http://sqlblog.com/blogs/michael_coles/default.aspx" target="_blank"&gt;Michael Coles&lt;/a&gt; &lt;/em&gt;&lt;br /&gt;
			&lt;strong&gt;12.&lt;/strong&gt; Using XML to transport relational data &lt;em&gt;by &lt;a href="http://milambda.blogspot.com/" target="_blank"&gt;Matija Lah&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;13.&lt;/strong&gt; Full text searching &lt;em&gt;by &lt;/em&gt;&lt;a href="http://arcanecode.com/about/" target="_blank"&gt;&lt;em&gt;Robert C. Cain&lt;/em&gt;&lt;/a&gt; &lt;br /&gt;
			&lt;strong&gt;14.&lt;/strong&gt; Simil: an algorithm to look for similar strings &lt;em&gt;by Tom van Stiphout&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;15.&lt;/strong&gt; LINQ to SQL and the ADO.NET Entity Framework &lt;em&gt;by &lt;a href="http://www.SQLskills.com/blogs/BobB" target="_blank"&gt;Bob Beauchemin&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;16.&lt;/strong&gt; Table-valued parameters &lt;em&gt;by &lt;/em&gt;&lt;a href="http://online.appdev.com/edge/blogs/donkiely/default.aspx" target="_blank"&gt;&lt;em&gt;Don Kiely&lt;/em&gt;&lt;/a&gt; &lt;br /&gt;
			&lt;strong&gt;17.&lt;/strong&gt; Build your own index &lt;em&gt;by &lt;/em&gt;&lt;a href="http://www.sommarskog.se/" target="_blank"&gt;&lt;em&gt;Erland Sommarskog&lt;/em&gt;&lt;/a&gt; &lt;br /&gt;
			&lt;strong&gt;18.&lt;/strong&gt; Getting and staying connected&amp;mdash;or not &lt;em&gt;by &lt;a href="http://betav.com/blog/billva/" target="_blank"&gt;William Vaughn&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;19.&lt;/strong&gt; Extending your productivity in SSMS and Query Analyzer &lt;em&gt;by &lt;a href="http://zine.net.pl/blogs/sqlgeek/" target="_blank"&gt;Pawel Potasinski&lt;/a&gt;&lt;/em&gt; &lt;/font&gt;
			&lt;/p&gt;
			&lt;/td&gt;
			&lt;td valign="top"&gt;
			&lt;p&gt;
			&lt;font size="2"&gt;&lt;strong&gt;20.&lt;/strong&gt; Why every SQL developer needs to have a tools database &lt;em&gt;by &lt;a href="http://sqlblog.com/blogs/denis_gobo/default.aspx" target="_blank"&gt;Denis Gobo&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;21.&lt;/strong&gt; Deprecation feature &lt;em&gt;by &lt;a href="http://sqlserver.ro/blogs/cristians_blog/default.aspx" target="_blank"&gt;Cristian Lefter&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;22.&lt;/strong&gt; Placing SQL Server in your pocket &lt;em&gt;by &lt;a href="http://www.christec.co.nz/blog/" target="_blank"&gt;Christopher Fairbairn&lt;/a&gt;&lt;/em&gt;&lt;a href="http://www.christec.co.nz/blog/" target="_blank"&gt; &lt;br /&gt;
			&lt;/a&gt;&lt;strong&gt;23.&lt;/strong&gt; Mobile data strategies &lt;em&gt;by John Baird&lt;/em&gt; &lt;/font&gt;
			&lt;/p&gt;
			&lt;font size="2"&gt;
			&lt;p&gt;
			&lt;br /&gt;
			&lt;br /&gt;
			&lt;font size="2"&gt;&lt;strong&gt;&lt;font size="3"&gt;PART III&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt; 
			&lt;/p&gt;
			&lt;/font&gt;
			&lt;p&gt;
			&lt;font size="2"&gt;&lt;strong&gt;&lt;font size="3"&gt;DATABASE ADMINISTRATION&lt;br /&gt;
			&lt;em&gt;&lt;a href="http://www.SQLskills.com/blogs/Kimberly" target="_blank"&gt;Kimberly L. Tripp&lt;/a&gt; and &lt;a href="http://www.SQLskills.com/blogs/Paul" target="_blank"&gt;Paul S. Randal&lt;/a&gt;, Editors&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt; &lt;br /&gt;
			&lt;strong&gt;24.&lt;/strong&gt; What does it mean to be a DBA? &lt;em&gt;by &lt;/em&gt;&lt;a href="http://bradmcgehee.com/" target="_blank"&gt;&lt;em&gt;Brad&amp;nbsp;McGehee&lt;/em&gt;&lt;/a&gt; &lt;br /&gt;
			&lt;strong&gt;25.&lt;/strong&gt; Working with maintenance plans &lt;em&gt;by &lt;a href="http://sqlblog.com/blogs/tibor_karaszi/default.aspx" target="_blank"&gt;Tibor Karaszi&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;26.&lt;/strong&gt; PowerShell in SQL Server &lt;em&gt;by &lt;a href="http://msmvps.com/blogs/richardsiddaway/default.aspx" target="_blank"&gt;Richard Siddaway&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;27.&lt;/strong&gt; Automating SQL Server management using Server Management Objects &lt;em&gt;by &lt;/em&gt;&lt;a href="http://sqlblog.com/blogs/allen_white/default.aspx" target="_blank"&gt;&lt;em&gt;Allen White&lt;/em&gt;&lt;/a&gt; &lt;br /&gt;
			&lt;strong&gt;28.&lt;/strong&gt; Practical auditing in SQL Server 2008 &lt;em&gt;by &lt;a href="http://www.sqlskills.com/BLOGS/KIMBERLY/admin/Pages/www.sqldbatips.com" target="_blank"&gt;Jasper Smith&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;29.&lt;/strong&gt; My favorite DMVs and why &lt;em&gt;by &lt;a href="http://sqlblog.com/blogs/aaron_bertrand/default.aspx" target="_blank"&gt;Aaron Bertrand&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;30.&lt;/strong&gt; Reusing space in a table &lt;em&gt;by &lt;/em&gt;&lt;a href="http://www.webbtechsolutions.com/blog" target="_blank"&gt;&lt;em&gt;Joe Webb&lt;/em&gt;&lt;/a&gt; &lt;br /&gt;
			&lt;strong&gt;31.&lt;/strong&gt; Some practical issues in table partitioning &lt;em&gt;by &lt;a href="http://www.solidq.com/na/MentorDetail.aspx?Id=38" target="_blank"&gt;Ron Talmage&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;32.&lt;/strong&gt; Partitioning for manageability (and maybe performance) &lt;em&gt;by Dan Guzman&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;33.&lt;/strong&gt; Faster, smaller, and more energy-efficient backups without indexes &lt;em&gt;by &lt;a href="http://blogs.sqlserver.org.au/user/Profile.aspx?UserID=2102" target="_blank"&gt;Greg Linwood&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;34.&lt;/strong&gt; Using database mirroring to become a superhero! &lt;em&gt;by &lt;/em&gt;&lt;a href="http://glennberrysqlperformance.spaces.live.com/blog/" target="_blank"&gt;&lt;em&gt;Glenn Berry&lt;/em&gt;&lt;/a&gt; &lt;br /&gt;
			&lt;strong&gt;35.&lt;/strong&gt; The poor man&amp;#39;s SQL Server log shipping &lt;em&gt;by &lt;a href="http://www.pythian.com/news/author/sarmiento/" target="_blank"&gt;Edwin Sarmiento&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;36.&lt;/strong&gt; Some understated changes found in SQL Server 2005 replication &lt;em&gt;by Paul Ibison&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;37.&lt;/strong&gt; High performance Transactional Replication &lt;em&gt;by &lt;a href="http://sqlblog.com/blogs/hilary_cotter/default.aspx" target="_blank"&gt;Hilary Cotter&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;38.&lt;/strong&gt; Successfully implementing Kerberos delegation &lt;em&gt;by &lt;/em&gt;&lt;a href="http://twitter.com/SQLSocialite" target="_blank"&gt;&lt;em&gt;Scott Stauffer&lt;/em&gt;&lt;/a&gt; &lt;br /&gt;
			&lt;strong&gt;39.&lt;/strong&gt; Running SQL Server on Hyper-V &lt;em&gt;by &lt;/em&gt;&lt;a href="http://sqlblog.com/blogs/john_paul_cook/default.aspx" target="_blank"&gt;&lt;em&gt;John Paul Cook&lt;/em&gt;&lt;/a&gt; &lt;/font&gt;
			&lt;/p&gt;
			&lt;/td&gt;
			&lt;td valign="top"&gt;
			&lt;p&gt;
			&lt;font size="2"&gt;&lt;strong&gt;&lt;font size="3"&gt;PART IV &lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;
			&lt;/p&gt;
			&lt;p&gt;
			&lt;font size="2"&gt;&lt;strong&gt;&lt;font size="3"&gt;PERFORMANCE TUNING AND OPTIMIZATION&lt;br /&gt;
			&lt;/font&gt;&lt;/strong&gt;&lt;a href="http://sqlblog.com/blogs/kalen_delaney/default.aspx" target="_blank"&gt;&lt;strong&gt;&lt;em&gt;&lt;font size="3"&gt;Kalen Delaney&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;em&gt;&lt;font size="3"&gt;, Editor&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt; &lt;br /&gt;
			&lt;strong&gt;40.&lt;/strong&gt; When is an unused index not an unused index? &lt;em&gt;by &lt;a href="http://msmvps.com/blogs/robfarley/archive/tags/sql/default.aspx" target="_blank"&gt;Rob Farley&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;41.&lt;/strong&gt; Speeding up queries with index covering &lt;em&gt;by &lt;a href="http://sqlblogcasts.com/blogs/alex_kuznetsov/" target="_blank"&gt;Alex Kuznetsov&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;42.&lt;/strong&gt; Tracing the deadlock &lt;em&gt;by &lt;/em&gt;&lt;a href="http://sqlinthewild.co.za/" target="_blank"&gt;&lt;em&gt;Gail Shaw&lt;/em&gt;&lt;/a&gt; &lt;br /&gt;
			&lt;strong&gt;43.&lt;/strong&gt; How to optimize tempdb performance &lt;em&gt;by &lt;a href="http://bradmcgehee.com/" target="_blank"&gt;&lt;em&gt;Brad McGehee&lt;/em&gt;&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;44.&lt;/strong&gt; Does the order of columns in an index matter? &lt;em&gt;by &lt;a href="http://www.webbtechsolutions.com/blog" target="_blank"&gt;&lt;em&gt;Joe Webb&lt;/em&gt;&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;45.&lt;/strong&gt; Correlating SQL Profiler with Windows Performance Monitor &lt;em&gt;by &lt;/em&gt;&lt;a href="http://sqlblog.com/blogs/kevin_kline/" target="_blank"&gt;&lt;em&gt;Kevin Kline&lt;/em&gt;&lt;/a&gt;&lt;em&gt; &lt;/em&gt;&lt;br /&gt;
			&lt;strong&gt;46.&lt;/strong&gt; Using correlation to improve query performance &lt;em&gt;by Gert-Jan Strik&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;47.&lt;/strong&gt; Dr. DMV: how to use Dynamic Management Views &lt;em&gt;by &lt;a href="http://glennberrysqlperformance.spaces.live.com/blog/" target="_blank"&gt;&lt;em&gt;Glenn Berry&lt;/em&gt;&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;48.&lt;/strong&gt; Query performance and disk I/O counters &lt;em&gt;by &lt;a href="http://sqlblog.com/blogs/linchi_shea/default.aspx" target="_blank"&gt;Linchi Shea&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;49.&lt;/strong&gt; XEVENT: the next event infrastructure for SQL Server &lt;em&gt;by &lt;a href="http://sqlserver.ro/blogs/cristians_blog/default.aspx" target="_blank"&gt;Cristian Lefter&lt;/a&gt;&lt;/em&gt; &lt;/font&gt;
			&lt;/p&gt;
			&lt;font size="2"&gt;
			&lt;p&gt;
			&lt;br /&gt;
			&lt;br /&gt;
			&lt;font size="2"&gt;&lt;strong&gt;&lt;font size="3"&gt;PART V &lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;
			&lt;/p&gt;
			&lt;/font&gt;
			&lt;p&gt;
			&lt;font size="2"&gt;&lt;strong&gt;&lt;font size="3"&gt;BI DEVELOPMENT&lt;br /&gt;
			&lt;/font&gt;&lt;/strong&gt;&lt;a href="http://sqlblog.com/blogs/greg_low/default.aspx" target="_blank"&gt;&lt;strong&gt;&lt;em&gt;&lt;font size="3"&gt;Greg Low&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;em&gt;&lt;font size="3"&gt;, Editor&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt; &lt;br /&gt;
			&lt;strong&gt;50.&lt;/strong&gt; BI for the relational guy &lt;em&gt;by &lt;/em&gt;&lt;a href="http://sqlblog.com/blogs/erin_welker/default.aspx" target="_blank"&gt;&lt;em&gt;Erin Welker&lt;/em&gt;&lt;/a&gt; &lt;br /&gt;
			&lt;strong&gt;51.&lt;/strong&gt; Unlocking the secrets of SQL Server 2008 Reporting Services &lt;em&gt;by &lt;a href="http://betav.com/blog/billva/" target="_blank"&gt;William Vaughn&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;52.&lt;/strong&gt; Reporting Services tips and tricks &lt;em&gt;by Bruce Loehle-Conger&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;53.&lt;/strong&gt; SQL Server Audit: change tracking or change data capture? &lt;em&gt;by &lt;/em&gt;&lt;a href="http://sqlblog.com/blogs/aaron_bertrand/default.aspx" target="_blank"&gt;&lt;em&gt;Aaron Bertrand&lt;/em&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;
			&lt;strong&gt;54.&lt;/strong&gt; Introduction to SSAS data mining &lt;em&gt;by &lt;/em&gt;&lt;a href="http://blogs.solidq.com/EN/dsarka/default.aspx" target="_blank"&gt;&lt;em&gt;Dejan Sarka&lt;/em&gt;&lt;/a&gt; &lt;br /&gt;
			&lt;strong&gt;55.&lt;/strong&gt; To aggregate or not to aggregate: is there really a question? &lt;em&gt;by &lt;/em&gt;&lt;a href="http://sqlblog.com/blogs/erin_welker/default.aspx" target="_blank"&gt;&lt;em&gt;Erin Welker&lt;/em&gt;&lt;/a&gt; &lt;br /&gt;
			&lt;strong&gt;56.&lt;/strong&gt; Incorporating data profiling in the ETL process &lt;em&gt;by &lt;a href="http://agilebi.com/cs/blogs/jwelch"&gt;John Welch&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;57.&lt;/strong&gt; Expressions in SQL Server Integration Services &lt;em&gt;by &lt;a href="http://bi-polar23.blogspot.com/" target="_blank"&gt;Matthew Roche&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;58.&lt;/strong&gt; SSIS performance tips &lt;em&gt;by &lt;a href="http://www.ssistalk.com/" target="_blank"&gt;Phil Brammer&lt;/a&gt;&lt;/em&gt; &lt;br /&gt;
			&lt;strong&gt;59.&lt;/strong&gt; Incremental loads using T-SQL and SSIS &lt;em&gt;by &lt;/em&gt;&lt;a href="http://sqlblog.com/blogs/andy_leonard/default.aspx" target="_blank"&gt;&lt;em&gt;Andy Leonard&lt;/em&gt;&lt;/a&gt; &lt;/font&gt;
			&lt;/p&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
&lt;font size="2"&gt;&lt;/font&gt;
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=MkXrYrrAv8A:Q1D_YTDxy4Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=MkXrYrrAv8A:Q1D_YTDxy4Y:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=MkXrYrrAv8A:Q1D_YTDxy4Y:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?i=MkXrYrrAv8A:Q1D_YTDxy4Y:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=MkXrYrrAv8A:Q1D_YTDxy4Y:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <link>http://www.sqlskills.com/BLOGS/KIMBERLY/post/SQL-Server-MVP-Deep-Dives-(book-for-charity).aspx</link>
      <author>kimberly.nospam@nospam.sqlskills.com (kltripp)</author>
      <comments>http://www.sqlskills.com/BLOGS/KIMBERLY/post/SQL-Server-MVP-Deep-Dives-(book-for-charity).aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=f39cb3fc-5513-4f37-87d4-db5ffcddfd6f</guid>
      <pubDate>Wed, 11 Nov 2009 15:17:00 -0800</pubDate>
      <category>Conferences</category>
      <category>Resources</category>
      <dc:publisher>kltripp</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/KIMBERLY/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=f39cb3fc-5513-4f37-87d4-db5ffcddfd6f</pingback:target>
      <slash:comments>18</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/KIMBERLY/trackback.axd?id=f39cb3fc-5513-4f37-87d4-db5ffcddfd6f</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/KIMBERLY/post/SQL-Server-MVP-Deep-Dives-(book-for-charity).aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/KIMBERLY/syndication.axd?post=f39cb3fc-5513-4f37-87d4-db5ffcddfd6f</wfw:commentRss>
    </item>
    <item>
      <title>Filtered indexes and filtered stats might become seriously out-of-date</title>
      <description>&lt;p&gt;
&lt;font face="verdana,geneva"&gt;&lt;font size="2"&gt;Time flies when you&amp;#39;re having fun, eh? This week Paul and I are in Dublin, Ireland delivering a deep technical &amp;quot;SQL Immersion Event&amp;quot; on Internals, Performance Tuning and Maintenance&amp;nbsp;with our partner &lt;a href="http://www.prodata.ie/" target="_blank"&gt;ProData&lt;/a&gt;&amp;nbsp;(and having a blast - we have a really fun and very interactive group). And, today&amp;#39;s an even more interesting day to be in Dublin as it&amp;#39;s the &lt;/font&gt;&lt;a href="http://www.prweb.com/releases/2009/09/prweb2929344.htm" target="_blank"&gt;&lt;font size="2"&gt;250th anniversary of the Guinness Brewery&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;...everyone around Dublin will be toasting the most popular drink in Ireland today (Sept 24) at 5:59pm GMT. Unfortunately, our class runs until 6pm but Paul tells me that we&amp;#39;re still going to celebrate. ;-) &lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;For now, we&amp;#39;ll just have to celebrate some SQL (I can hear minor grumblings everywhere :)... &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Filtered indexes and filtered stats are an incredibly powerful feature in SQL Server 2008 - one that I&amp;#39;ve posted on before and will again. Today&amp;#39;s post is about some of the gotchas with filtered index stats and filtered stats. Cutting to the punchline - you might have some trouble with their accuracy as your data changes. The SIMPLE solution is to update these specific stats manually and more frequently (meaning that you don&amp;#39;t want to rely on the database option AUTO_UPDATE_STATISTICS). In fact, depending on your data volatility, you might want to update these statistics on a VERY frequent basis. Part of the question you&amp;#39;ll have to answer is how much of the filtered set changes over the course of a day/week/month. And, in whatever frequency you reach 5-10% (let&amp;#39;s say weekly), I&amp;#39;d suggest updating the statistics weekly. If you update 5-10% within the course of a day - then daily. Let me give you the full story... &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;&lt;font face="verdana,geneva"&gt;Statistics are traditionally updated when roughly 20% (+ a minimum of 500 rows) of the data has changed. If you have a table with 100,000 rows then SQL Server will hit the threshold at 20,500 rows (just a tad over 20%) and a table with 10,000 rows will hit the threshold at 2,500 rows (which is 25%). Additionally,&amp;nbsp;in SQL Server 200x (2000, 2005 and 2008) statistics are NOT immediately updated when the threshold is reached, instead they are invalidated. It&amp;#39;s not until someone needs the statistic that SQL Server updates it. This reduces thrashing that occurred in SQL Server 7.0 when stats were updated immediately instead of just being invalidated. Another interesting point is what is meant by &amp;quot;20% of the data has changed?&amp;quot;... How is that defined? Is it based on updates to columns or inserts of rows? Of course the answer is... it depends - here, it depends on the version of SQL Server that you&amp;#39;re using:&lt;/font&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;font size="2"&gt;SQL Server 2000 defines 20% as 20% of the ROWS have changed. You can see this in sysindexes.rcmodctr.&lt;/font&gt;&lt;/li&gt;
	&lt;li&gt;&lt;font size="2"&gt;SQL Server 2005/8 defines 20% as 20% of the COLUMN data has changed. You cannot see this unless you are accessing SQL Server through the DAC as it&amp;#39;s in a base system table (2005: sysrowsetcolumns.rcmodified and for &lt;/font&gt;2008: &lt;font size="2"&gt;sysrscols.rcmodified).&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Now, for regular indexes (&lt;em&gt;those that do not include a filter&lt;/em&gt;) both strategies have pros and cons. Let&amp;#39;s start with the con for SQL 2000... If you have a particularly volatile column then the rowmodctr will be increased quickly and then ALL statistics (&lt;em&gt;even those that have not changed&lt;/em&gt;) are invalidated. Without a way to understand a &lt;strong&gt;&lt;u&gt;column&lt;/u&gt;&lt;/strong&gt;&amp;#39;s volatility, you will invalidate some statistics too soon. So, 2005/2008 created a column modification counter to better define when a statistic should be invalidated. But, the con for SQL 2005/2008 (which is the pro for row-based algorithm of SQL 2000) is that a lot more data must change in a single column before the statistics get updated. If your modifications are fairly well balanced (across the table) then the row-based algorithm could suit you better. If your modifications are isolated (to a specific column) then the column-based algorithm will suit you better. But, neither is perfect... and, the new column-based algorithm poses another HUGE problem for filtered indexes.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;For filtered indexes the threshold invalidation algorithm is tied SOLELY to the column and not just to the filtered set. So, if your table has 10,000 rows it takes 2,500 modifications in that column to update statistics. If your filtered index only has 1,000 rows... then you could theoretically modify this specific filtered set 2.5 times before IT would be updated. Yes, I realized that this sounds unlikely but it&amp;#39;s really not. What if your filter is for ACTIVE = 1. It&amp;#39;s only 1% of your table and it&amp;#39;s the most active data set. You will effectively have to modify this set 20 times over before the statistics for your filtered index get updated.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;But, having said that - I also have a simple solution. Don&amp;#39;t wait... For filtered indexes (especially on volatile data) add a special UPDATE STATISTICS job that specifically updates their stats with a FULLSCAN. The good news is that they are likely to be smaller indexes (and therefore easier/less-costly statistics to update) and you&amp;#39;ll clearly get a lot better uses out of them. Additional good news is that many filtered indexes are designed to be covering indexes, covering indexes aren&amp;#39;t going to rely as heavily on statistics so there are many covered queries that won&amp;#39;t care. The following query will get the list of all of your tables/indexes that have filters. Once you have this list you can create a loop to update statistics.&lt;/font&gt; 
&lt;/p&gt;
&lt;font size="5" color="#0000ff"&gt;&lt;font size="5" color="#0000ff"&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font size="2"&gt;SELECT &lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#ff00ff"&gt;&lt;font color="#ff00ff"&gt;object_name&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff00ff"&gt;&lt;font color="#ff00ff"&gt;object_id&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/font&gt; [Table Name]&lt;br /&gt;
	&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,&lt;/font&gt;&lt;/font&gt; name &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/font&gt; [Index Name]&lt;br /&gt;
	&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff00ff"&gt;&lt;font color="#ff00ff"&gt;stats_date&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff00ff"&gt;&lt;font color="#ff00ff"&gt;object_id&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/font&gt; stats_id&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/font&gt; [Last Updated]&lt;br /&gt;
	&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#008000"&gt;&lt;font color="#008000"&gt;sys&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#008000"&gt;&lt;font color="#008000"&gt;stats&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;WHERE &lt;/font&gt;&lt;/font&gt;has_filter &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/font&gt; 1&lt;/font&gt; 
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;
&lt;font size="2"&gt;So, there are lots of options and&amp;nbsp;definitely a few things&amp;nbsp;of which to be aware... filtered indexes&amp;nbsp;and filtered stats are a powerful option&amp;nbsp;to leverage, just make sure you keep those stats up to date!&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;Cheers... it&amp;#39;s time for a pint of Guinness!&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;kt &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;PS - For more information on statistics, check out the SQL Server whitepapers:&lt;/font&gt; 
&lt;/p&gt;
&lt;font size="2"&gt;&lt;font size="1"&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd535534.aspx" target="_blank"&gt;&lt;font size="2"&gt;Statistics Used by the Query Optimizer in Microsoft SQL Server 2008&lt;/font&gt;&lt;/a&gt;&amp;nbsp;&lt;font size="2"&gt;(added this after comment #2, please review ALL of the comments as there&amp;#39;s a good discussion on the 2008 filtered stats &amp;quot;multiplier&amp;quot; and whether or not it&amp;#39;s having the desired effect?! I say no and want to reiterate - filtered index stats need more frequent updating based on your data volatility.)&lt;/font&gt;&lt;/li&gt;&lt;font size="2"&gt;&lt;font size="1"&gt;
	&lt;li&gt;&lt;font size="2"&gt;&lt;a href="http://www.microsoft.com/technet/prodtechnol/sql/2005/qrystats.mspx" target="_blank"&gt;Statistics Used by the Query Optimizer in Microsoft SQL Server 2005&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;&lt;/font&gt;&lt;/font&gt;
	&lt;li&gt;&lt;font size="2"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa902688(SQL.80).aspx" target="_blank"&gt;Statistics Used by the Query Optimizer in Microsoft SQL Server 2000&lt;/a&gt;&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/font&gt;&lt;/font&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=wAOGNUkgZ3U:eXI2jxsRRBA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=wAOGNUkgZ3U:eXI2jxsRRBA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=wAOGNUkgZ3U:eXI2jxsRRBA:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?i=wAOGNUkgZ3U:eXI2jxsRRBA:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=wAOGNUkgZ3U:eXI2jxsRRBA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <link>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Filtered-indexes-and-filtered-stats-might-become-seriously-out-of-date.aspx</link>
      <author>kimberly.nospam@nospam.sqlskills.com (kltripp)</author>
      <comments>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Filtered-indexes-and-filtered-stats-might-become-seriously-out-of-date.aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=92044df1-6f06-4d1e-8b0c-d3e991d4ec72</guid>
      <pubDate>Thu, 24 Sep 2009 09:45:00 -0800</pubDate>
      <category>Filtered Indexes</category>
      <category>Indexes</category>
      <category>Inside the storage engine</category>
      <category>SQL Server 2008</category>
      <category>Statistics</category>
      <dc:publisher>kltripp</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/KIMBERLY/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=92044df1-6f06-4d1e-8b0c-d3e991d4ec72</pingback:target>
      <slash:comments>13</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/KIMBERLY/trackback.axd?id=92044df1-6f06-4d1e-8b0c-d3e991d4ec72</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Filtered-indexes-and-filtered-stats-might-become-seriously-out-of-date.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/KIMBERLY/syndication.axd?post=92044df1-6f06-4d1e-8b0c-d3e991d4ec72</wfw:commentRss>
    </item>
    <item>
      <title>The fall line-up and event list - we hope to see you there!</title>
      <description>&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;We&amp;#39;ve finally booked all of our tickets and started planning final details for all our of our classes and conferences this fall. We&amp;#39;ve got quite a few things planned and tons of great content at each. By continent, here&amp;#39;s the plan: &lt;/font&gt;
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font face="verdana,geneva"&gt;&lt;font size="3"&gt;&lt;strong&gt;Europe&lt;/strong&gt; &lt;/font&gt;&lt;/font&gt;
	&lt;/p&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;font face="verdana,geneva"&gt;&lt;font size="2"&gt;&lt;strong&gt;Dublin, Ireland: &lt;/strong&gt;September 21-25.&amp;nbsp;Paul and I&amp;nbsp;will be teaching a week-long Immersion Event&amp;nbsp;- combining internals, performance tuning, database maintenance and more.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
		&lt;li&gt;&lt;font face="verdana,geneva"&gt;&lt;font size="2"&gt;&lt;strong&gt;Warsaw, Poland: &lt;/strong&gt;September 29-30. Paul and I will be presenting a full day of SQL Server sessions at the Microsoft Technology Summit 2009&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;p&gt;
	&lt;font face="verdana,geneva"&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;font size="3"&gt;Australia - Melbourne&lt;/font&gt;&lt;/strong&gt; &lt;/font&gt;&lt;/font&gt;
	&lt;/p&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;font face="verdana,geneva" size="2"&gt;October 15-16. Paul and I will be teaching a 2-day class &amp;quot;SQL Server 2008: New Features - Updating Your Administrations Skills in Database Infrastructure and Scalability&amp;quot; &lt;/font&gt;&lt;/li&gt;
		&lt;li&gt;&lt;font face="verdana,geneva" size="2"&gt;October 19-22. Paul will be teaching a 4-day class &amp;quot;SQL Server 2005/2008: DB Maintenance and Availability: From Performance to Disaster Recovery&amp;quot;&lt;/font&gt;&lt;/li&gt;
		&lt;li&gt;&lt;font face="verdana,geneva" size="2"&gt;October 19-22. I will be teaching a 4-day class &amp;quot;SQL Server 2005/2008: Performance Tuning &amp;ndash; From Design to Indexing to Optimizing Procedural Code&amp;quot;&lt;/font&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;p&gt;
	&lt;strong&gt;&lt;font face="verdana,geneva" size="2"&gt;&lt;font size="3"&gt;US&lt;/font&gt; &lt;/font&gt;&lt;/strong&gt;
	&lt;/p&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;font face="verdana,geneva"&gt;&lt;font size="2"&gt;&lt;strong&gt;Seattle, WA &lt;/strong&gt;for SQLPASS: November 2-5. Paul and I will be teaching two full-day workshops and a Spotlight Session each.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
		&lt;li&gt;&lt;font face="verdana,geneva"&gt;&lt;font size="2"&gt;&lt;strong&gt;Las Vegas, NV &lt;/strong&gt;for SQL Connections: Nobember 9-12: Paul and&amp;nbsp;I will&amp;nbsp;be teaching two full-day workshops and 5 sessions. Stacia will be teaching 4 sessions on BI.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
		&lt;li&gt;&lt;font size="2"&gt;&lt;strong&gt;Redmond, WA &lt;/strong&gt;for SQL MCMs and Sharepoint MCM&amp;#39;s through the end of this year&lt;/font&gt;&lt;/li&gt;
	&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;You can find more details and links to the various registration sites on our &lt;/font&gt;&lt;a href="http://www.sqlskills.com/upcomingConferences.asp"&gt;&lt;font face="verdana,geneva" size="2"&gt;Upcoming Events&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt; page. And, if you have any questions, feel free to email me: Kimberly AT SQLskills.com or Paul AT SQLskills.com. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;We hope to see you there and be sure to swing by and say hi! &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Cheers,&lt;br /&gt;
kt &lt;/font&gt;
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=gyz5hprvG6Q:pkh_Rifl4y4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=gyz5hprvG6Q:pkh_Rifl4y4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=gyz5hprvG6Q:pkh_Rifl4y4:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?i=gyz5hprvG6Q:pkh_Rifl4y4:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=gyz5hprvG6Q:pkh_Rifl4y4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <link>http://www.sqlskills.com/BLOGS/KIMBERLY/post/The-fall-line-up-and-event-list-we-hope-to-see-you-there!.aspx</link>
      <author>kimberly.nospam@nospam.sqlskills.com (kltripp)</author>
      <comments>http://www.sqlskills.com/BLOGS/KIMBERLY/post/The-fall-line-up-and-event-list-we-hope-to-see-you-there!.aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=d9b1a308-4cfd-4e59-9617-32ea0578eb86</guid>
      <pubDate>Mon, 24 Aug 2009 17:35:00 -0800</pubDate>
      <category>Conferences</category>
      <category>Events</category>
      <dc:publisher>kltripp</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/KIMBERLY/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=d9b1a308-4cfd-4e59-9617-32ea0578eb86</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/KIMBERLY/trackback.axd?id=d9b1a308-4cfd-4e59-9617-32ea0578eb86</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/KIMBERLY/post/The-fall-line-up-and-event-list-we-hope-to-see-you-there!.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/KIMBERLY/syndication.axd?post=d9b1a308-4cfd-4e59-9617-32ea0578eb86</wfw:commentRss>
    </item>
    <item>
      <title>Column order doesn't matter... generally, but - IT DEPENDS!</title>
      <description>&lt;p&gt;
&lt;font face="verdana,geneva"&gt;&lt;font size="2"&gt;OK, for years I&amp;#39;ve been saying that SQL Server doesn&amp;#39;t care about the order in which you define the columns of your table because internally SQL Server will re-arrange your columns to store all of the fixed width columns first and the variable columns last. In both the fixed-width portion of the row as well as the variable-width portion of the row, the columns are defined in the order in which they are declared. So, what does matter?&lt;/font&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva"&gt;&lt;font size="2"&gt;It&amp;#39;s all in the cost of the variable array&amp;#39;s offset values. If the large majority of your NULLable records are at the end, then SQL Server doesn&amp;#39;t need to completely populate the variable block array (which saves 2 bytes per column). If you have a table where 36 columns are NULLable and generally they are NULL, then defining those columns at the end of the row can save you space.&lt;/font&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;The following script will show you how the maximum length of the row changes based on whether or not a later column in the variable block is NOT NULL - even when most/all of the prior columns are!&lt;/font&gt; 
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;&lt;font size="3"&gt;&lt;font face="courier new,courier"&gt;CREATE&lt;/font&gt;&lt;font face="courier new,courier"&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;TABLE&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier" size="3"&gt; RowSizeVariableBlock&lt;br /&gt;
	&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="courier new,courier"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;ID &lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NOT&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;identity&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font face="courier new,courier" color="#808080"&gt;,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;c01 &lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;char&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;10&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NOT&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;default&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;test&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font face="courier new,courier" color="#808080"&gt;,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;c02 &lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;datetime2&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;7&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NOT&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;default&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff00ff"&gt;&lt;font color="#ff00ff"&gt;sysdatetime&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font face="courier new,courier" color="#808080"&gt;(),&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;c03 &lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;char&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;80&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NOT&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;default&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;junk&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font face="courier new,courier" color="#808080"&gt;,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;c04 &lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font face="courier new,courier" color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;c05 &lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font face="courier new,courier" color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;c06 &lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font face="courier new,courier" color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;c07 &lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font face="courier new,courier" color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;c08 &lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font face="courier new,courier" color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;c09 &lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font face="courier new,courier" color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;c10 &lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font face="courier new,courier" color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;c11 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c12 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c13 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c14 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c15 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c16 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c17 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c18 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c19 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c20 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c21 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c22 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c23 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c24 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c25 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c26 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c27 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c28 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c29 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c30 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c31 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c32 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c33 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c34 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c35 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c36 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c37 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c38 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c39 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;c40 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;varchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;100&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL&lt;br /&gt;
	)&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;go&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;insert&lt;/font&gt;&lt;/font&gt; RowSizeVariableBlock &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;DEFAULT&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;VALUES&lt;br /&gt;
	go&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;*&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier" size="3"&gt; RowSizeVariableBlock &lt;br /&gt;
	&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;go&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;*&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt;&lt;/font&gt; &lt;font color="#008000"&gt;&lt;font color="#008000"&gt;sys&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#008000"&gt;&lt;font color="#008000"&gt;dm_db_index_physical_stats&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff00ff"&gt;&lt;font color="#ff00ff"&gt;db_id&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(),&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff00ff"&gt;&lt;font color="#ff00ff"&gt;object_id&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;RowSizeVariableBlock&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;),&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;null,&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;null,&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;detailed&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font face="courier new,courier" size="3" color="#808080"&gt;)&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#008000"&gt;&lt;font color="#008000"&gt;-- review &amp;quot;max&amp;quot; record size = 114&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;go&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;insert&lt;/font&gt;&lt;/font&gt; RowSizeVariableBlock&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;c01&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/font&gt; c03&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/font&gt; c20&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;values &lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;med row&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;up to c20&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;test&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;go&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;*&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier" size="3"&gt; RowSizeVariableBlock &lt;br /&gt;
	&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;go&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;*&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt;&lt;/font&gt; &lt;font color="#008000"&gt;&lt;font color="#008000"&gt;sys&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#008000"&gt;&lt;font color="#008000"&gt;dm_db_index_physical_stats&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff00ff"&gt;&lt;font color="#ff00ff"&gt;db_id&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(),&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff00ff"&gt;&lt;font color="#ff00ff"&gt;object_id&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;RowSizeVariableBlock&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;),&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;null,&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;null,&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;detailed&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font face="courier new,courier" size="3" color="#808080"&gt;)&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#008000"&gt;&lt;font color="#008000"&gt;-- review &amp;quot;max&amp;quot; record size = 154&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;go&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;insert&lt;/font&gt;&lt;/font&gt; RowSizeVariableBlock&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;c01&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/font&gt; c03&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/font&gt; c30&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;values &lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;med+ row&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;up to c30&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;test&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;go&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;*&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier" size="3"&gt; RowSizeVariableBlock &lt;br /&gt;
	&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;go&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;*&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt;&lt;/font&gt; &lt;font color="#008000"&gt;&lt;font color="#008000"&gt;sys&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#008000"&gt;&lt;font color="#008000"&gt;dm_db_index_physical_stats&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff00ff"&gt;&lt;font color="#ff00ff"&gt;db_id&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(),&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff00ff"&gt;&lt;font color="#ff00ff"&gt;object_id&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;RowSizeVariableBlock&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;),&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;null,&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;null,&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;detailed&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font face="courier new,courier" size="3" color="#808080"&gt;)&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#008000"&gt;&lt;font color="#008000"&gt;-- review &amp;quot;max&amp;quot; record size = 174&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;go&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;insert&lt;/font&gt;&lt;/font&gt; RowSizeVariableBlock&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;c01&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/font&gt; c03&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/font&gt; c40&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;values &lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;large row&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;up to c40&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;test&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;go&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;*&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier" size="3"&gt; RowSizeVariableBlock &lt;br /&gt;
	&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;go&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;*&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt;&lt;/font&gt; &lt;font color="#008000"&gt;&lt;font color="#008000"&gt;sys&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="courier new,courier"&gt;&lt;font size="3"&gt;&lt;font color="#008000"&gt;&lt;font color="#008000"&gt;dm_db_index_physical_stats&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff00ff"&gt;&lt;font color="#ff00ff"&gt;db_id&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(),&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff00ff"&gt;&lt;font color="#ff00ff"&gt;object_id&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;RowSizeVariableBlock&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;),&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;null,&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;null,&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;detailed&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="courier new,courier"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;br /&gt;
	&lt;font color="#008000"&gt;-- review &amp;quot;max&amp;quot; record size = 194&lt;/font&gt;&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;go&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font size="+0"&gt;&lt;font size="3"&gt;&lt;font size="+0"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 10pt"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="verdana,geneva"&gt;&lt;font size="+0"&gt;&lt;font size="3"&gt;&lt;font size="+0"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 10pt"&gt;While there are some other optimizations at this level, &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 10pt"&gt;most&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 10pt"&gt; tables cannot benefit from this as the data populations aren&amp;#39;t as predictable nor are most tables filled with so many variable-width and NULLable columns.&amp;nbsp;However, if you do have this data pattern, defining these columns at the end of your table&amp;#39;s definition - MIGHT save a tremendous amount of space, especially when this table is very large!&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;
	&lt;/p&gt;
	&lt;font size="+0"&gt;&lt;font size="3"&gt;&lt;font size="+0"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 10pt"&gt;&lt;/span&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 12pt"&gt;&lt;/span&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 10pt"&gt;&lt;font face="verdana,geneva"&gt;Paul&amp;#39;s blogged more on these structures as well as the NULL bitmap here: &lt;/font&gt;&lt;a href="http://www.sqlskills.com/BLOGS/PAUL/post/Misconceptions-around-null-bitmap-size.aspx"&gt;&lt;font face="verdana,geneva"&gt;http://www.sqlskills.com/BLOGS/PAUL/post/Misconceptions-around-null-bitmap-size.aspx&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva"&gt;. &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 'Verdana','sans-serif'; font-size: 12pt"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="+0"&gt;&lt;font size="3"&gt;&lt;font size="+0"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="+0"&gt;&lt;font size="3"&gt;&lt;font size="+0"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="+0"&gt;&lt;font size="3"&gt;&lt;font size="+0"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="+0"&gt;&lt;font size="3"&gt;&lt;font size="+0"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="+0"&gt;&lt;font size="3"&gt;&lt;font size="+0"&gt;&lt;font size="2"&gt;
	&lt;p&gt;
	&lt;font face="trebuchet ms,geneva"&gt;&lt;span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 10pt"&gt;&lt;font face="verdana,geneva" color="#000000"&gt;Enjoy! And, thanks for reading,&lt;br /&gt;
	kt&lt;/font&gt;&lt;/span&gt; &lt;/font&gt;
	&lt;/p&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/blockquote&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=3dyMzlMY2bQ:XJiFkNOGeg0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=3dyMzlMY2bQ:XJiFkNOGeg0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=3dyMzlMY2bQ:XJiFkNOGeg0:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?i=3dyMzlMY2bQ:XJiFkNOGeg0:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=3dyMzlMY2bQ:XJiFkNOGeg0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <link>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Column-order-doesnt-matter-generally-but-IT-DEPENDS!.aspx</link>
      <author>kimberly.nospam@nospam.sqlskills.com (kltripp)</author>
      <comments>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Column-order-doesnt-matter-generally-but-IT-DEPENDS!.aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=bd865bc4-9dcd-45e5-88aa-cd5b016c836e</guid>
      <pubDate>Mon, 10 Aug 2009 07:10:00 -0800</pubDate>
      <category>Design</category>
      <category>SQL Server 2005</category>
      <category>SQL Server 2008</category>
      <category>Inside the storage engine</category>
      <dc:publisher>kltripp</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/KIMBERLY/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=bd865bc4-9dcd-45e5-88aa-cd5b016c836e</pingback:target>
      <slash:comments>11</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/KIMBERLY/trackback.axd?id=bd865bc4-9dcd-45e5-88aa-cd5b016c836e</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Column-order-doesnt-matter-generally-but-IT-DEPENDS!.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/KIMBERLY/syndication.axd?post=bd865bc4-9dcd-45e5-88aa-cd5b016c836e</wfw:commentRss>
    </item>
    <item>
      <title>Public SQL Server Immersion Event in Dublin in September</title>
      <description>&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Paul and I will be teaching a week-long public Immersion Event in Dublin, September 21-25, in partnership with our good friends at &lt;/font&gt;&lt;a href="http://www.prodata.ie/"&gt;&lt;font face="verdana,geneva" size="2"&gt;Prodata&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt;&amp;nbsp;and Microsoft Ireland.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;The class will cover:&lt;/font&gt; 
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Day 1: SQL Server Internals (On-disk structures, index internals, logging, recovery, transaction log architecture)&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Day 2: Designing for Performance (data types, table and index partitioning)&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Day 3: Indexing for Performance (Access patterns, covering, INCLUDE, indexing strategies)&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Day 4: Essential Database Maintenance (data and log files, tempdb, index and statistics maintenance, backup and restore)&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Day 5.1: Essential Database Maintenance (consistency checking and disaster recovery)&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Day 5.2: SQL Consolidation and Virtualization&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;This is going to be a great workshop where we combine the best of all our various classes into a superb learning opportunity.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Checkout the &lt;a href="https://www.eventznet.com/295/ac/prodata/sie09/default.aspx"&gt;registration site&lt;/a&gt; for more in-depth details about the content, location, and cost.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Hope to see you there!&lt;/font&gt;
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=kItYtdq4E78:mw6WBQxPagY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=kItYtdq4E78:mw6WBQxPagY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=kItYtdq4E78:mw6WBQxPagY:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?i=kItYtdq4E78:mw6WBQxPagY:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=kItYtdq4E78:mw6WBQxPagY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <link>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Public-SQL-Server-Immersion-Event-in-Dublin-in-September.aspx</link>
      <author>kimberly.nospam@nospam.sqlskills.com (Admin)</author>
      <comments>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Public-SQL-Server-Immersion-Event-in-Dublin-in-September.aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=2732dc1c-011d-4b0e-a0bb-911d3d3751a7</guid>
      <pubDate>Fri, 10 Jul 2009 15:58:00 -0800</pubDate>
      <dc:publisher>Admin</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/KIMBERLY/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=2732dc1c-011d-4b0e-a0bb-911d3d3751a7</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/KIMBERLY/trackback.axd?id=2732dc1c-011d-4b0e-a0bb-911d3d3751a7</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Public-SQL-Server-Immersion-Event-in-Dublin-in-September.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/KIMBERLY/syndication.axd?post=2732dc1c-011d-4b0e-a0bb-911d3d3751a7</wfw:commentRss>
    </item>
    <item>
      <title>Looking for security vulnerabilities in database code</title>
      <description>&lt;p&gt;
I&amp;#39;ve always been concerned with security and I&amp;#39;ve always stressed the importance of auditing the REAL user context not just the current user (see &lt;a href="http://www.sqlskills.com/BLOGS/KIMBERLY/post/EXECUTE-AS-and-an-important-update-your-DDL-Triggers-(for-auditing-or-prevention).aspx" target="_blank"&gt;this post&lt;/a&gt; on EXECUTE AS and auditing). So, I generally try to avoid using dynamic string execution and if necessary create well tested/protected parameters (fyi - using QUOTENAME can be a fantasic solution to protectng identifiers as input parameters but it can&amp;#39;t protect more complex strings). 
&lt;/p&gt;
&lt;p&gt;
Having said that, what if I&amp;#39;m looking at a database for the first time... just poking around trying to see if there&amp;#39;s anything that needs further attention? I&amp;#39;ve come up with a quick query... And, while it&amp;#39;s not going to &amp;quot;solve&amp;quot; your problem (as that&amp;#39;s going to take some re-writing of code) or even &lt;em&gt;truly &lt;/em&gt;verify if you&amp;#39;re vulnerable, it gives you a &amp;quot;quick list&amp;quot;&amp;nbsp;of where you should look first! If&amp;nbsp;your code uses dynamic strings AND it&amp;#39;s elevated - then&amp;nbsp;start there!&amp;nbsp; 
&lt;/p&gt;
&lt;font size="5" color="#0000ff"&gt;&lt;font size="5" color="#0000ff"&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font size="2"&gt;SELECT &lt;font color="#ff00ff"&gt;&lt;font color="#ff00ff"&gt;OBJECT_NAME&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff00ff"&gt;&lt;font color="#ff00ff"&gt;object_id&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/font&gt; [Procedure Name]&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font size="2" color="#808080"&gt;,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;&amp;nbsp; CASE&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; WHEN&lt;/font&gt;&lt;/font&gt; sm&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;definition&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;LIKE&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;%EXEC (%&amp;#39;&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;OR&lt;/font&gt;&lt;/font&gt; sm&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;definition&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;LIKE&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;%EXEC(%&amp;#39;&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;THEN&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;WARNING: code contains EXEC&amp;#39;&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHEN&lt;/font&gt;&lt;/font&gt; sm&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;definition&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;LIKE&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;%EXECUTE (%&amp;#39;&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;OR&lt;/font&gt;&lt;/font&gt; sm&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;definition&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;LIKE&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;%EXECUTE(%&amp;#39;&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;THEN&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;WARNING: code contains EXECUTE&amp;#39;&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;&amp;nbsp; END&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/font&gt; [Dynamic Strings]&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font size="2" color="#808080"&gt;,&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;&amp;nbsp; CASE&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;WHEN&lt;/font&gt;&lt;/font&gt; execute_as_principal_id &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;IS&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NOT&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;NULL&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;THEN&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;N&amp;#39;WARNING: EXECUTE AS &amp;#39;&lt;/font&gt;&lt;/font&gt; &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;+&lt;/font&gt;&lt;/font&gt; &lt;font color="#ff00ff"&gt;&lt;font color="#ff00ff"&gt;user_name&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;execute_as_principal_id&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;)&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ELSE&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#ff0000"&gt;&lt;font color="#ff0000"&gt;&amp;#39;Code to run as caller - check connection context&amp;#39;&lt;br /&gt;
	&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;&amp;nbsp; END&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/font&gt; [Execution Context Status]&lt;br /&gt;
	&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt;&lt;/font&gt; &lt;font color="#008000"&gt;&lt;font color="#008000"&gt;sys&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font color="#008000"&gt;&lt;font color="#008000"&gt;sql_modules&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;AS&lt;/font&gt;&lt;/font&gt; sm&lt;br /&gt;
	&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;ORDER&lt;/font&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;BY&lt;/font&gt;&lt;/font&gt; [Procedure Name] &lt;/font&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;
Is this enough? Anything else you&amp;#39;d check? What do you think? 
&lt;/p&gt;
&lt;p&gt;
THANKS!&lt;br /&gt;
kt 
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=MBr6YHzP20E:KU-hbEMK438:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=MBr6YHzP20E:KU-hbEMK438:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=MBr6YHzP20E:KU-hbEMK438:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?i=MBr6YHzP20E:KU-hbEMK438:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=MBr6YHzP20E:KU-hbEMK438:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <link>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Looking-for-security-vulnerabilities-in-database-code.aspx</link>
      <author>kimberly.nospam@nospam.sqlskills.com (kltripp)</author>
      <comments>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Looking-for-security-vulnerabilities-in-database-code.aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=2a2a7de6-c0d5-4b2f-856b-f4df09a91447</guid>
      <pubDate>Tue, 30 Jun 2009 08:34:00 -0800</pubDate>
      <category>Security</category>
      <category>SQL Server 2005</category>
      <category>SQL Server 2008</category>
      <dc:publisher>kltripp</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/KIMBERLY/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=2a2a7de6-c0d5-4b2f-856b-f4df09a91447</pingback:target>
      <slash:comments>39</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/KIMBERLY/trackback.axd?id=2a2a7de6-c0d5-4b2f-856b-f4df09a91447</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/KIMBERLY/post/Looking-for-security-vulnerabilities-in-database-code.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/KIMBERLY/syndication.axd?post=2a2a7de6-c0d5-4b2f-856b-f4df09a91447</wfw:commentRss>
    </item>
    <item>
      <title>The Tipping Point Query Answers</title>
      <description>&lt;p&gt;
&lt;font size="2"&gt;OK, I&amp;#39;ll definitely take a beating from all of you for having gone so long between my survey posts and now. I won&amp;#39;t even go into the details but between some crazy work schedules, multiple sinus problems and even migraines... well, I&amp;#39;ve been a bit behind. Let&amp;#39;s just say that April/May were rough at best. I&amp;#39;m feeling better and well, now I&amp;#39;m trying to catch up. I had really gotten the blogging bug in March but I completely lost it in April. But, this tipping point series is in dire need of lots of explaining so I&amp;#39;m really hoping to get a few posts done in this area for sure! &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;First, I started the discussion around this in a few surveys: &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size="3"&gt;&lt;strong&gt;Survey/Question 1&lt;/strong&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font size="2"&gt;Q1 was described as this: if a table has 1 million rows at 20 rows per page (50,000 pages), at what percentage (roughly) of the data would a nonclustered index no longer be used. Blogged &lt;a href="http://www.sqlskills.com/BLOGS/KIMBERLY/post/Why-arent-those-nonclustered-indexes-being-used.aspx" target="_blank"&gt;here&lt;/a&gt;&lt;/font&gt;&lt;font size="2"&gt;. Here&amp;#39;s what the survey said as of today: &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font size="2"&gt;&lt;img src="http://www.sqlskills.com/BLOGS/KIMBERLY/image.axd?picture=2009%2f6%2fTippingPointQuery1Survey.jpg" alt="" /&gt;&lt;/font&gt; 
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font size="2"&gt;And, for Q1 the&amp;nbsp;correct result (&lt;strong&gt;Between 0-2% of the rows&lt;/strong&gt;) is actually the best result (but, by no means the overwhelming majority at only 28%). However, often people just &amp;quot;think&amp;quot; the answer is very small. So... I did a few more questions/surveys.&amp;nbsp;&lt;/font&gt; 
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;font size="3"&gt;&lt;strong&gt;Survey/Question 2&lt;/strong&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font size="2"&gt;Q2 was described as this: if a table has 1 million rows at&amp;nbsp;100 rows per page (10,000 pages), at what percentage (roughly) of the data would a nonclustered index no longer be used. Blogged &lt;a href="http://www.sqlskills.com/BLOGS/KIMBERLY/post/Tipping-Point-Queries-More-Questions-To-Really-Test-You!.aspx" target="_blank"&gt;here&lt;/a&gt;&lt;font size="2"&gt;. Here&amp;#39;s what the survey said as of today: &lt;/font&gt;&lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font size="2"&gt;&lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;img src="http://www.sqlskills.com/BLOGS/KIMBERLY/image.axd?picture=2009%2f6%2fTippingPointQuery2Survey.jpg" alt="" /&gt; 
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font size="2"&gt;And, for Q2 the&amp;nbsp;correct result (&lt;strong&gt;Less than .5% of the rows&lt;/strong&gt;) is actually at a tie for the best (but, again, even a small percentage at only 22%). Again, often people just &amp;quot;think&amp;quot; the answer is very small. So... I did one more question/survey.&amp;nbsp;&lt;/font&gt; 
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;font size="3"&gt;&lt;strong&gt;Survey/Question 3&lt;/strong&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font size="2"&gt;Q3 was described as this: if a table has 1 million rows at&amp;nbsp;2 rows per page (500,000 pages), at what percentage (roughly) of the data would a nonclustered index no longer be used. Blogged &lt;a href="http://www.sqlskills.com/BLOGS/KIMBERLY/post/Tipping-Point-Queries-More-Questions-To-Really-Test-You!.aspx" target="_blank"&gt;here&lt;/a&gt;&lt;font size="2"&gt;. Here&amp;#39;s what the survey said as of today: &lt;/font&gt;&lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;img src="http://www.sqlskills.com/BLOGS/KIMBERLY/image.axd?picture=2009%2f6%2fTippingPointQuery3Survey.jpg" alt="" /&gt; 
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font size="2"&gt;And, for Q3 the&amp;nbsp;correct result (&lt;strong&gt;Between 10-20% of the rows&lt;/strong&gt;) is actually NOT the highest answer. And, this is even more convincing that there&amp;#39;s confusion around what&amp;#39;s going on and why.&lt;/font&gt; 
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;font size="3"&gt;&lt;strong&gt;The Tipping Point&lt;/strong&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;&lt;strong&gt;What is the tipping point? &lt;/strong&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font size="2"&gt;It&amp;#39;s the point where the number of rows returned is &amp;quot;no longer selective enough&amp;quot;. SQL Server chooses NOT to use the nonclustered index to look up the corresponding data rows and instead performs a table scan. &lt;/font&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font size="2"&gt;When does the tipping point occur?&lt;/font&gt; &lt;/strong&gt;
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font size="2"&gt;It depends... it&amp;#39;s MOSTLY tied to the number of pages in the table. Generally, around 30% of the number of PAGES in the table is about where the tipping point occurs. However, parallelism, some server settings (processor affinity and I/O affinity), memory and table size - all can have an impact. And, since it can vary - I typically estimate somewhere between 25% and 33% as a &lt;strong&gt;&lt;u&gt;rough&lt;/u&gt;&lt;em&gt; &lt;/em&gt;&lt;/strong&gt;tipping point (and, you&amp;#39;ll see from a bunch of my examples, that number is not EXACT). Then, I translate that into rows.&lt;/font&gt; 
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font size="2"&gt;&lt;strong&gt;Math for Tipping Point Query 3:&lt;/strong&gt; If a table has 500,000 pages then 25% = 125,000 and 33% = 166,000. So, somewhere between 125,000 and 166,000 ROWS the query will tip. Turning that into a percentage 125,000/1million = 12.5% and 166,000/1million = 16.6%. So, if a table has 500,000 pages (and 1 million rows) then queries that return less than 12.5% of the data are likely to USE the nonclustered index to lookup the data and queries over 16.6% of the data are LIKELY to use a table scan. For this table, that percentage seems &amp;quot;reasonable&amp;quot;. But, most of us say that the tipping point happens at a much lower percentage... why? Because&amp;nbsp;row size - which&amp;nbsp;determines table size (and therefore pages) is really what has the greatest impact. So, let&amp;#39;s look at Tipping&amp;nbsp;Point Query 2...&lt;/font&gt;&amp;nbsp; 
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font size="2"&gt;&lt;strong&gt;Math for Tipping Point Query 2:&lt;/strong&gt; If a table has 10,000 pages then 25% = 2,500 and 33% = 3,333. So, somewhere between 2,500 and&amp;nbsp;3,333 ROWS the query will tip. Turning that into a percentage 2,500/1million = .25% and 3,333/1million = .33% (not even 1%). So, if a table has only 10,000 pages (and 1 million rows) then queries that return less than a quarter of 1% of the data are likely to USE the nonclustered index to lookup the data and queries over one third of one percent are LIKELY to use a table scan. For this table, that percentage seems really low BUT, at the same time it makes sense (to a point) that a small table would be scanned... but, for less than 1%. 1% is NOT selective enough.&amp;nbsp;For small tables, it might not matter all that much&amp;nbsp;(they&amp;#39;re small, they fit in cache, etc.) but for bigger tables - it might be a big performance problem.&lt;/font&gt;&amp;nbsp; 
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font size="2"&gt;&lt;strong&gt;Math for Tipping Point Query 1:&lt;/strong&gt; If a table has 50,000 pages then 25% = 12,500 and 33% = 16,666. So, somewhere between 12,500 and&amp;nbsp;16,666 ROWS the query will tip. Turning that into a percentage 12,500/1million = 1.25% and 16,666/1million = 1.66% (under 2%). So, if a table has 50,000 pages (and 1 million rows) then queries that return less than 1.25% of the data are likely to USE the nonclustered index to lookup the data and queries over 1.66% are LIKELY to use a table scan. Again, this seems like a low number. Again, for small tables, it might not matter all that much&amp;nbsp;(they&amp;#39;re small, they fit in cache, etc.) but as tables get larger and larger - it CAN be a big performance problem.&lt;/font&gt;&amp;nbsp; 
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font size="2"&gt;Why is the tipping point interesting?&lt;/font&gt; &lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font size="2"&gt;It shows that narrow (non-covering) nonclustered indexes have fewer uses than often expected (just because a query has a column in the WHERE clause doesn&amp;#39;t mean that SQL Server&amp;#39;s going to use that index) &lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font size="2"&gt;It happens at a point that&amp;#39;s typically MUCH earlier than expected... and, in fact, sometimes this is a VERY bad thing! &lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font size="2"&gt;Only nonclustered indexes that do not cover a query have a tipping point. Covering indexes don&amp;#39;t have this same issue (which further proves why they&amp;#39;re so important for performance tuning) &lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font size="2"&gt;You might find larger tables/queries performing table scans when in fact, it might be better to use a nonclustered index. How do you know, how do you test, how do you hint and/or force... and, is that a good thing?&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;font size="2"&gt;&lt;strong&gt;Real example of an interesting tipping point&lt;/strong&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;Earlier today, I went on facebook and twitter and gave the following information - very vaguely - and I asked &amp;quot;why&amp;quot; is Q2 so much slower than Q1 if Q2 returns only 10 more rows. Same table and&amp;nbsp;no hints (other than MAXDOP)...&lt;/font&gt; 
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font size="2"&gt;Q1: &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;SELECT &lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;*&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt;&lt;/font&gt;&amp;nbsp;table &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt;&lt;/font&gt;&amp;nbsp;colx &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt; 597420 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;OPTION &lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;MAXDOP&lt;/font&gt;&lt;/font&gt; 1&lt;font size="3" color="#808080"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="2"&gt;) &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
	&lt;/p&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;font size="2"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="2"&gt;returns 197,419 rows&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
		&lt;li&gt;&lt;font size="2"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="2"&gt;takes 116,031 ms (1 minute, 52 seconds)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
		&lt;li&gt;&lt;font size="2"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="2"&gt;1,197,700 logical reads, &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="2"&gt;5 physical reads, 137,861 read-ahead reads&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
		&lt;li&gt;&lt;font size="2"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="2"&gt;7,562 ms CPU time&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; 
		&lt;p&gt;
		&lt;font size="2"&gt;Q2: &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;SELECT &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;*&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;nbsp;table &lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt;&lt;/font&gt;&amp;nbsp;colx &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt; 597430 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;OPTION &lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;MAXDOP&lt;/font&gt;&lt;/font&gt; 1&lt;font size="3" color="#808080"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; 
		&lt;/p&gt;
		&lt;/font&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;font size="2"&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;font size="2"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="2"&gt;returns 197,4&lt;u&gt;2&lt;/u&gt;9 rows&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
		&lt;li&gt;&lt;font size="2"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="2"&gt;takes&amp;nbsp;244,094 ms (4 minutes,&amp;nbsp;4 seconds)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
		&lt;li&gt;&lt;font size="2"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="2"&gt;801,685&amp;nbsp;logical reads,&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="2"&gt;1410 physical reads,&amp;nbsp;801,678 read-ahead reads&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
		&lt;li&gt;&lt;font size="2"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="2"&gt;9,188&amp;nbsp;ms CPU time&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;p&gt;
	There were lots of great guesses... but, it&amp;#39;s the tipping point. SQL Server chose to &amp;quot;tip&amp;quot; the second query because it was &amp;quot;over the line&amp;quot;. But, it&amp;#39;s important to realize that there are cases when that&amp;#39;s NOT a good idea. And, what are your options? 
	&lt;/p&gt;
	&lt;p&gt;
	In SQL Server 2005 - the only option is to force the nonclustered index to be used: 
	&lt;/p&gt;
	&lt;blockquote&gt;
		&lt;p&gt;
		&lt;font size="2"&gt;Q2: &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;SELECT &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;*&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;nbsp;table WITH (INDEX (NCInd)) &lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt;&lt;/font&gt;&amp;nbsp;colx &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt; 597430 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;OPTION &lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;MAXDOP&lt;/font&gt;&lt;/font&gt; 1&lt;font size="3" color="#808080"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; 
		&lt;/p&gt;
		&lt;p&gt;
		&lt;font size="2"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="2" color="#000000"&gt;But, this can be TERRIBLY bad on some machines where the IOs could be a lot faster (and where data might already be in cache). These &lt;strong&gt;&lt;em&gt;specific &lt;/em&gt;&lt;/strong&gt;numbers are exactly that - specific to this HARDWARE (and, I chose not-so-optimal HW in this case to highlight this problem). And, depending on what number you use (what if this is a parameter in sps?) you might force SQL Server to do WAY more IOs by forcing the index than allowing the tipping point to do its job. But, depending on your hardware (and/or what you know to be in cache at the time of execution), it might be better to force an index instead of letting SQL Server choose. So, should I force the index? Be careful, if you&amp;#39;re wrong - it could take more time and actually be slower.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; 
		&lt;/p&gt;
	&lt;/blockquote&gt;
	&lt;p&gt;
	In SQL Server 2008 - there&amp;#39;s a new hint - FORCESEEK: 
	&lt;/p&gt;
	&lt;blockquote&gt;
		&lt;p&gt;
		&lt;font size="2"&gt;Q2: &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;SELECT &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;*&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;nbsp;table WITH (INDEX (FORCESEEK)) &lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt;&lt;/font&gt;&amp;nbsp;colx &lt;font color="#808080"&gt;&lt;font color="#808080"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt; 597430 &lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;OPTION &lt;/font&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;MAXDOP&lt;/font&gt;&lt;/font&gt; 1&lt;font size="3" color="#808080"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; 
		&lt;/p&gt;
		&lt;p&gt;
		&lt;font size="2"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="2" color="#000000"&gt;FORCESEEK is better because it doesn&amp;#39;t tie you to a particular index directly but it also doesn&amp;#39;t let SQL Server tip to a table scan. However, just like forcing an index - you can be wrong! &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
		&lt;/p&gt;
	&lt;/blockquote&gt;
	&lt;p&gt;
	&lt;font size="2"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="3" color="#808080"&gt;&lt;font size="2" color="#000000"&gt;So, what should you do? It depends. If you know your data well and you do some extensive testing you &lt;em&gt;might&lt;/em&gt; consider using a hint (there are some clever things you can do programmatically in sps, I&amp;#39;ll try and dedicate a post to this soon). However, a much better choice (if at all possible) is to consider covering (that&amp;#39;s really my main point :). In my queries, covering is unrealistic because my queries want all columns (the evil SELECT *) but, if your queries are narrower AND they are high-priority, you are better off with a covering index (in many cases) over a hint because an index which covers a query, never tips.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; 
	&lt;/p&gt;
	&lt;p&gt;
	That&amp;#39;s the answer to the puzzle for now but there&amp;#39;s definitely a lot more to dive into. The Tipping Point can be a very good thing - and it usually works well. But, if you&amp;#39;re finding that you can force an index and get better performance you might want to do some investigating and see if it&amp;#39;s this. Then consider how likely a hint is to help and now you know where you can focus. 
	&lt;/p&gt;
	&lt;p&gt;
	Thanks for reading,&lt;br /&gt;
	kt 
	&lt;/p&gt;
	&lt;/font&gt;
&lt;/blockquote&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=40uim85_UTY:CMSU3CgsOJQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=40uim85_UTY:CMSU3CgsOJQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=40uim85_UTY:CMSU3CgsOJQ:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?i=40uim85_UTY:CMSU3CgsOJQ:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/KimberlyLTripp?a=40uim85_UTY:CMSU3CgsOJQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/KimberlyLTripp?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <link>http://www.sqlskills.com/BLOGS/KIMBERLY/post/The-Tipping-Point-Query-Answers.aspx</link>
      <author>kimberly.nospam@nospam.sqlskills.com (kltripp)</author>
      <comments>http://www.sqlskills.com/BLOGS/KIMBERLY/post/The-Tipping-Point-Query-Answers.aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=47d66a60-99de-49b0-b50f-be4f26c88f0b</guid>
      <pubDate>Sun, 07 Jun 2009 21:29:00 -0800</pubDate>
      <category>Nonclustered Indexes</category>
      <category>SQL Server 2005</category>
      <category>SQL Server 2008</category>
      <category>The Tipping Point</category>
      <dc:publisher>kltripp</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/KIMBERLY/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/KIMBERLY/post.aspx?id=47d66a60-99de-49b0-b50f-be4f26c88f0b</pingback:target>
      <slash:comments>87</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/KIMBERLY/trackback.axd?id=47d66a60-99de-49b0-b50f-be4f26c88f0b</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/KIMBERLY/post/The-Tipping-Point-Query-Answers.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/KIMBERLY/syndication.axd?post=47d66a60-99de-49b0-b50f-be4f26c88f0b</wfw:commentRss>
    </item>
  </channel>
</rss>

