<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Partitioned Tables in SQL Server 2008</title><link>http://blogs.msdn.com/craigfr/archive/2008/07/15/partitioned-tables-in-sql-server-2008.aspx</link><description>In this post , I introduced how SQL Server 2005 implements query plans on partitioned tables. If you've read that post or used partitioned tables, you may recall that SQL Server 2005 uses a constant scan operator to enumerate the list of partition ids</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: Partitioned Tables in SQL Server 2008</title><link>http://blogs.msdn.com/craigfr/archive/2008/07/15/partitioned-tables-in-sql-server-2008.aspx#8759272</link><pubDate>Sun, 20 Jul 2008 23:06:45 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8759272</guid><dc:creator>Peso</dc:creator><description>&lt;p&gt;How accurate is the $PARTIION function in this case, compared to examine the XML output?&lt;/p&gt;
</description></item><item><title>re: Partitioned Tables in SQL Server 2008</title><link>http://blogs.msdn.com/craigfr/archive/2008/07/15/partitioned-tables-in-sql-server-2008.aspx#8763092</link><pubDate>Tue, 22 Jul 2008 07:36:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8763092</guid><dc:creator>craigfr</dc:creator><description>&lt;p&gt;The $PARTITION function operates on a row by row basis. &amp;nbsp;For instance, in the example in this post, if we write:&lt;/p&gt;
&lt;p&gt;SELECT *, $PARTITION.PF(A) FROM T&lt;/p&gt;
&lt;p&gt;for each row returned by the query we will also get the partition id to which the row belongs. &amp;nbsp;The XML output will only indicate which partitions were scanned but will not tell us how the rows map to partitions.&lt;/p&gt;
&lt;p&gt;Note that we can use the $PARTITION function to get the same results as the XML output (much less efficiently) by writing:&lt;/p&gt;
&lt;p&gt;SELECT DISTINCT $PARTITION.PF(A) FROM T&lt;/p&gt;
&lt;p&gt;Of course, this query does not return any data other than the partition ids.&lt;/p&gt;
</description></item><item><title>Partitioned Indexes in SQL Server 2008</title><link>http://blogs.msdn.com/craigfr/archive/2008/07/15/partitioned-tables-in-sql-server-2008.aspx#8834644</link><pubDate>Tue, 05 Aug 2008 21:36:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8834644</guid><dc:creator>Craig Freedman's SQL Server Blog</dc:creator><description>&lt;p&gt;In my last post , I looked at how SQL Server 2008 handles scans on partitioned tables. I explained that&lt;/p&gt;
</description></item><item><title>re: Partitioned Tables in SQL Server 2008</title><link>http://blogs.msdn.com/craigfr/archive/2008/07/15/partitioned-tables-in-sql-server-2008.aspx#8876999</link><pubDate>Mon, 18 Aug 2008 21:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8876999</guid><dc:creator>sholliday</dc:creator><description>&lt;p&gt;//While evaluating the filter repeatedly may not cost too much if we have only four partitions, it is certainly going to waste some cycles if we have many //&lt;/p&gt;
&lt;p&gt;For arguments sake, let's say there is a table with 200 partitions. &amp;nbsp;(Not a recommendation, just a number for posing a question).&lt;/p&gt;
&lt;p&gt;So you're saying that if the same partitioning scheme(and functions) are used on a Sql Server 2005 db and then (same db setup) on a Sql Server 2008 database, the Sql Server 2008 database will perform better because it will &amp;quot;avoid evaluating the filter&amp;quot; so many times.&lt;/p&gt;
&lt;p&gt;My question is primarily about dynamic partition elimination, where I am passing a @MyPartitionKey (int) variable into a stored procedure.&lt;/p&gt;
&lt;p&gt;And if I'm discerning all that correctly, any idea how costly that really ends up being?&lt;/p&gt;
&lt;p&gt;Maybe in the 5 million total rows, 1 million per partition range? &amp;nbsp;( I know each case is varying, but any hints would be appreciated).&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;
</description></item><item><title>Dynamic Partition Elimination Performance</title><link>http://blogs.msdn.com/craigfr/archive/2008/07/15/partitioned-tables-in-sql-server-2008.aspx#8889034</link><pubDate>Sat, 23 Aug 2008 01:50:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8889034</guid><dc:creator>Craig Freedman's SQL Server Blog</dc:creator><description>&lt;p&gt;In this post on partitioned tables, I mentioned that SQL Server 2008 has a much more efficient implementation&lt;/p&gt;
</description></item><item><title>re: Partitioned Tables in SQL Server 2008</title><link>http://blogs.msdn.com/craigfr/archive/2008/07/15/partitioned-tables-in-sql-server-2008.aspx#8889038</link><pubDate>Sat, 23 Aug 2008 01:52:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8889038</guid><dc:creator>craigfr</dc:creator><description>&lt;p&gt;I decided to measure the overhead of dynamic partition elimination with a large number of partitions. &amp;nbsp;Please see this post for the results:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://blogs.msdn.com/craigfr/archive/2008/08/22/dynamic-partition-elimination-performance.aspx"&gt;http://blogs.msdn.com/craigfr/archive/2008/08/22/dynamic-partition-elimination-performance.aspx&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>re: Partitioned Tables in SQL Server 2008</title><link>http://blogs.msdn.com/craigfr/archive/2008/07/15/partitioned-tables-in-sql-server-2008.aspx#9276730</link><pubDate>Mon, 05 Jan 2009 07:58:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9276730</guid><dc:creator>wuloo</dc:creator><description>&lt;p&gt;one question: I have index partitioning on a table, will the non-clustered index partitioning (one or more using the same partition scheme) bring more tradeoff for index seek or scan or sql optimizer take them the same? &amp;nbsp;I noticed if using non-clustered index partitioning will create more partitions for each NC index. &lt;/p&gt;
</description></item><item><title>re: Partitioned Tables in SQL Server 2008</title><link>http://blogs.msdn.com/craigfr/archive/2008/07/15/partitioned-tables-in-sql-server-2008.aspx#9283317</link><pubDate>Tue, 06 Jan 2009 00:08:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9283317</guid><dc:creator>craigfr</dc:creator><description>&lt;p&gt;With regards to seek or scan performance, the question to ask is whether there is a predicate on the partition column that can be used to enable partition elimination. &amp;nbsp;If the answer is yes, then partitioning should not impact performance. &amp;nbsp;If the answer is no, the query plan may need to seek or scan every partition in which case partitioning may affect performance. &amp;nbsp;The actual impact depends on the number and size of the partitions and total number of rows processed by the query.&lt;/p&gt;
&lt;p&gt;A typical scenario for partitioned tables is to use ALTER TABLE to switch an old partition out and a new partition in. &amp;nbsp;This scenario requires that all indexes (clustered and non-clustered) be partitioned using the same scheme. &amp;nbsp;For some workloads, there may be a tradeoff between enabling this scenario and achieving optimal partition elimination performance.&lt;/p&gt;
</description></item></channel></rss>