{"id":502,"date":"2012-03-20T05:43:00","date_gmt":"2012-03-20T05:43:00","guid":{"rendered":"\/blogs\/joe\/post\/Temporary-Statistics-for-Database-Snapshots-in-SQL-Server-2012.aspx"},"modified":"2013-01-02T20:32:11","modified_gmt":"2013-01-03T04:32:11","slug":"temporary-statistics-for-database-snapshots-in-sql-server-2012","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/joe\/temporary-statistics-for-database-snapshots-in-sql-server-2012\/","title":{"rendered":"Temporary Statistics for Database Snapshots in SQL Server 2012"},"content":{"rendered":"<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">You may have already heard that SQL Server 2012 adds automatic generation of statistics for AlwaysOn availability group readable secondaries, storing the statistics in tempdb.<span>&nbsp; <\/span>This functionality was also extended to other areas beyond just AlwaysOn availability groups as I&rsquo;ll demonstrate next&hellip;<\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">Using the AdventureWorksDWDenali database, I&rsquo;ll start by checking the current statistics on the FactInternetSales table:<\/font><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#0000ff\"><font style=\"font-size: 11pt\">USE<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"> <span><font color=\"#008080\">[AdventureWorksDWDenali]<\/font><\/span><\/font><span><font color=\"#808080\" style=\"font-size: 11pt\">;<\/font><\/span><\/span><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#0000ff\" style=\"font-size: 11pt\">GO<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font style=\"font-size: 11pt\"><\/font><\/font><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">&#8212; Confirm statistics on FactInternetSales<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#0000ff\"><font style=\"font-size: 11pt\">EXEC<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"> <span><font color=\"#800000\">sp_helpstats<\/font><\/span><span><font color=\"#0000ff\"> <\/font><\/span><span><font color=\"#ff0000\">&#39;FactInternetSales&#39;<\/font><\/span><\/font><span><font color=\"#808080\" style=\"font-size: 11pt\">;<\/font><\/span><\/span><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font style=\"font-size: 11pt\"><\/font><\/font><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">\/*<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">statistics_name<span> <\/span>statistics_keys<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">_WA_Sys_00000008_1273C1CD<span>&nbsp; <\/span>SalesTerritoryKey<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">_WA_Sys_0000000A_1273C1CD<span>&nbsp; <\/span>SalesOrderLineNumber<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">_WA_Sys_0000000B_1273C1CD<span>&nbsp; <\/span>RevisionNumber<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">_WA_Sys_0000000C_1273C1CD<span>&nbsp; <\/span>OrderQuantity<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<strong><span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">_WA_Sys_0000000D_1273C1CD<span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>UnitPrice<\/font><\/font><\/span><\/strong><strong><span><\/span><\/strong>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">_WA_Sys_0000000E_1273C1CD<span>&nbsp; <\/span>ExtendedAmount<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">_WA_Sys_0000000F_1273C1CD<span>&nbsp; <\/span>UnitPriceDiscountPct<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">_WA_Sys_00000010_1273C1CD<span>&nbsp; <\/span>DiscountAmount<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">_WA_Sys_00000011_1273C1CD<span>&nbsp; <\/span>ProductStandardCost<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">_WA_Sys_00000012_1273C1CD<span>&nbsp; <\/span>TotalProductCost<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">_WA_Sys_00000013_1273C1CD<span>&nbsp; <\/span>SalesAmount<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">_WA_Sys_00000014_1273C1CD<span>&nbsp; <\/span>TaxAmt<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">_WA_Sys_00000015_1273C1CD<span>&nbsp; <\/span>Freight<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">_WA_Sys_00000016_1273C1CD<span>&nbsp; <\/span>CarrierTrackingNumber<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">_WA_Sys_00000017_1273C1CD<span>&nbsp; <\/span>CustomerPONumber<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">_WA_Sys_00000018_1273C1CD<span>&nbsp; <\/span>OrderDate<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">_WA_Sys_00000019_1273C1CD<span>&nbsp; <\/span>DueDate<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">_WA_Sys_0000001A_1273C1CD<span>&nbsp; <\/span>ShipDate<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">*\/<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font style=\"font-size: 11pt\"><\/font><\/font><\/span>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">Next, I&rsquo;m going to add a UnitPrice value to an existing row (creating just one row out of the table with this value):<\/font><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#ff00ff\"><font style=\"font-size: 11pt\">UPDATE<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"> <span><font color=\"#0000ff\">TOP <\/font><\/span><span><font color=\"#808080\">(<\/font><\/span>1<span><font color=\"#808080\">)<\/font><\/span> <span><font color=\"#008080\">dbo<\/font><\/span><span><font color=\"#808080\">.<\/font><\/span><\/font><span><font color=\"#008080\" style=\"font-size: 11pt\">FactInternetSales<\/font><\/span><\/span><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#0000ff\"><font style=\"font-size: 11pt\">SET<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"> <span><font color=\"#008080\">UnitPrice<\/font><\/span> <span><font color=\"#808080\">=<\/font><\/span> 777.77<\/font><span><font color=\"#808080\" style=\"font-size: 11pt\">;<\/font><\/span><\/span><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\"><\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">After that, I&rsquo;ll drop the statistics for the UnitPrice column.<span>&nbsp; <\/span>Why?<span>&nbsp; <\/span>I want demonstrate a scenario where automatic statistics may not have already been generated due to incoming query requests &ndash; but may still be needed for queries against the database snapshot:<\/font><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">&#8212; UnitPrice stats<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#0000ff\"><font style=\"font-size: 11pt\">DROP<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"> <span><font color=\"#0000ff\">STATISTICS<\/font><\/span> <span><font color=\"#008080\">FactInternetSales<\/font><\/span><span><font color=\"#808080\">.<\/font><\/span><span><font color=\"#008080\">_WA_Sys_0000000D_1273C1CD<\/font><\/span><\/font><span><font color=\"#808080\" style=\"font-size: 11pt\">;<\/font><\/span><\/span><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#0000ff\" style=\"font-size: 11pt\">GO<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font style=\"font-size: 11pt\"><\/font><\/font><\/span>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">Now I&rsquo;ll create a database snapshot on the database:<\/font><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#008000\" style=\"font-size: 11pt\">&#8212; Create the database snapshot<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#0000ff\"><font style=\"font-size: 11pt\">CREATE<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"> <span><font color=\"#0000ff\">DATABASE<\/font><\/span> <span><font color=\"#008080\">AdventureWorksDWDenali_AWDW_S1<\/font><\/span> <\/font><\/span><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#0000ff\" style=\"font-size: 11pt\">ON<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#808080\"><font style=\"font-size: 11pt\">(<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"> <span><font color=\"#008080\">NAME<\/font><\/span> <span><font color=\"#808080\">=<\/font><\/span> <span><font color=\"#008080\">AdventureWorksDWDenali_Data<\/font><\/span><span><font color=\"#808080\">,<\/font><\/span> <\/font><\/span><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#0000ff\"><font style=\"font-size: 11pt\">FILENAME<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"> <span><font color=\"#808080\">=<\/font><\/span> <\/font><\/span><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#ff0000\"><font style=\"font-size: 11pt\">&#39;C:\\Program Files\\Microsoft SQL Server\\MSSQL11.CAESAR\\MSSQL\\Data\\AdventureWorksDWDenali_AWDW_S1.ss&#39;<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"> <\/font><span><font color=\"#808080\" style=\"font-size: 11pt\">)<\/font><\/span><\/span><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#0000ff\"><font style=\"font-size: 11pt\">AS<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"> <span><font color=\"#0000ff\">SNAPSHOT<\/font><\/span> <span><font color=\"#0000ff\">OF<\/font><\/span> <span><font color=\"#008080\">AdventureWorksDWDenali<\/font><\/span><\/font><span><font color=\"#808080\" style=\"font-size: 11pt\">;<\/font><\/span><\/span><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#0000ff\" style=\"font-size: 11pt\">GO<\/font><\/font><\/span>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\"><\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">What happens if I use the database snapshot to query for a specific UnitPrice value?<span>&nbsp; <\/span>There are no statistics on the read-write database and now that I&rsquo;m using the database snapshot, I&rsquo;m not triggering automatic-statistics on the source database:<\/font><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#0000ff\"><font style=\"font-size: 11pt\">USE<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"> <span><font color=\"#008080\">AdventureWorksDWDenali_AWDW_S1<\/font><\/span><\/font><span><font color=\"#808080\" style=\"font-size: 11pt\">;<\/font><\/span><\/span><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font color=\"#0000ff\" style=\"font-size: 11pt\">GO<\/font><\/font><\/span><span><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><font style=\"font-size: 11pt\"><\/font><\/font><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#0000ff\"><font style=\"font-size: 11pt\">SELECT<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"> <span><font color=\"#008080\">ProductKey<\/font><\/span><span><font color=\"#808080\">,<\/font><\/span> <\/font><span><font color=\"#008080\" style=\"font-size: 11pt\">ProductStandardCost<\/font><\/span><\/span><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#0000ff\"><font style=\"font-size: 11pt\">FROM<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"> <span><font color=\"#008080\">dbo<\/font><\/span><span><font color=\"#808080\">.<\/font><\/span><\/font><span><font color=\"#008080\" style=\"font-size: 11pt\">FactInternetSales<\/font><\/span><\/span><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#0000ff\"><font style=\"font-size: 11pt\">WHERE<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"> <span><font color=\"#008080\">UnitPrice<\/font><\/span> <span><font color=\"#808080\">=<\/font><\/span> 777.77<\/font><span><font color=\"#808080\" style=\"font-size: 11pt\">;<\/font><\/span><\/span><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\"><\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">Looking at the actual plan for this query, I see that the estimated rows vs. actual do indeed match (and as an aside &ndash; the optimizer &ldquo;guess&rdquo; for this predicate would have been 3,852.72 without the supporting stats):<\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<span><a href=\"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-content\/uploads\/windows-live-writer\/temporary-statistics-for-database-snapsh\/41ef88d4\/clip_image001.png\"><img fetchpriority=\"high\" decoding=\"async\" style=\"background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px\" src=\"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-content\/uploads\/windows-live-writer\/temporary-statistics-for-database-snapsh\/72365d8a\/clip_image001_thumb.png\" border=\"0\" alt=\"clip_image001\" title=\"clip_image001\" width=\"416\" height=\"448\" \/><\/a><\/span>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">But I can also check to see if there are automatic statistics generated by qualifying is_temporary = 1:<\/font><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#0000ff\"><font style=\"font-size: 11pt\">SELECT<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"> <span><font color=\"#008080\">name<\/font><\/span><span><font color=\"#808080\">,<\/font><\/span> <\/font><span><font color=\"#008080\" style=\"font-size: 11pt\">stats_id<\/font><\/span><\/span><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#0000ff\"><font style=\"font-size: 11pt\">FROM<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"> <span><font color=\"#008000\">sys<\/font><\/span><span><font color=\"#808080\">.<\/font><\/span><span><font color=\"#008000\">stats<\/font><\/span> <\/font><\/span><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#0000ff\"><font style=\"font-size: 11pt\">WHERE<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"> <span><font color=\"#ff00ff\">OBJECT_ID<\/font><\/span> <span><font color=\"#808080\">=<\/font><\/span> <span><font color=\"#ff00ff\">object_id<\/font><\/span><span><font color=\"#808080\">(<\/font><\/span><span><font color=\"#ff0000\">&#39;FactInternetSales&#39;<\/font><\/span><\/font><span><font color=\"#808080\" style=\"font-size: 11pt\">)<\/font><\/span><\/span><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><span><font style=\"font-size: 11pt\">&nbsp;&nbsp;&nbsp;&nbsp; <\/font><\/span><font style=\"font-size: 11pt\"><span><font color=\"#808080\">AND<\/font><\/span> <span><font color=\"#008080\">is_temporary<\/font><\/span> <span><font color=\"#808080\">=<\/font><\/span> 1<\/font><span><font color=\"#808080\" style=\"font-size: 11pt\">;<\/font><\/span><\/font><\/span>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\"><\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">This returns:<\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<span><a href=\"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-content\/uploads\/windows-live-writer\/temporary-statistics-for-database-snapsh\/189840d6\/clip_image003.jpg\"><img decoding=\"async\" style=\"background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px\" src=\"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-content\/uploads\/windows-live-writer\/temporary-statistics-for-database-snapsh\/78110123\/clip_image003_thumb.jpg\" border=\"0\" alt=\"clip_image003\" title=\"clip_image003\" width=\"706\" height=\"40\" \/><\/a><\/span>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\">The stats name even gave me an additional hint of its origins via the &ldquo;readonly&rdquo; naming convention.<span>&nbsp; <\/span>If I look up the column for the automatically generated temporary stats, I see the following:<\/font><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#0000ff\"><font style=\"font-size: 11pt\">SELECT<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"><span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span><font color=\"#ff00ff\">object_name<\/font><\/span><span><font color=\"#808080\">(<\/font><\/span><span><font color=\"#ff00ff\">object_id<\/font><\/span><span><font color=\"#808080\">)<\/font><\/span> <span><font color=\"#008080\">tblname<\/font><\/span><\/font><span><font color=\"#808080\" style=\"font-size: 11pt\">,<\/font><\/span><\/span><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<span><font face=\"Lucida Console\"><span><font style=\"font-size: 11pt\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><\/span><font style=\"font-size: 11pt\"><span><font color=\"#ff00ff\">COL_NAME<\/font><\/span><span><font color=\"#808080\">(<\/font><\/span><span><font color=\"#ff00ff\">object_id<\/font><\/span><span><font color=\"#808080\">,<\/font><\/span> <span><font color=\"#008080\">column_id<\/font><\/span><span><font color=\"#808080\">)<\/font><\/span> <\/font><span><font color=\"#008080\" style=\"font-size: 11pt\">columnname<\/font><\/span><\/font><\/span>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#0000ff\"><font style=\"font-size: 11pt\">FROM<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"> <span><font color=\"#008000\">sys<\/font><\/span><span><font color=\"#808080\">.<\/font><\/span><\/font><span><font color=\"#008000\" style=\"font-size: 11pt\">stats_columns<\/font><\/span><\/span><\/font>\n<\/p>\n<p style=\"line-height: normal; margin: 0in 0in 0pt\" class=\"MsoNormal\">\n<font face=\"Lucida Console\"><span><font color=\"#0000ff\"><font style=\"font-size: 11pt\">WHERE<\/font><\/font><\/span><span><font style=\"font-size: 11pt\"> <span><font color=\"#008080\">stats_id<\/font><\/span> <span><font color=\"#808080\">=<\/font><\/span> 512000<\/font><span><font color=\"#808080\" style=\"font-size: 11pt\">;<\/font><\/span><\/span><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<font face=\"Calibri\"><font style=\"font-size: 11pt\"><\/font><\/font>\n<\/p>\n<p style=\"line-height: 13pt; margin: 0in 0in 10pt\" class=\"MsoNormal\">\n<span><a href=\"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-content\/uploads\/windows-live-writer\/temporary-statistics-for-database-snapsh\/3e8df12c\/clip_image005.jpg\"><img decoding=\"async\" style=\"background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px\" src=\"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-content\/uploads\/windows-live-writer\/temporary-statistics-for-database-snapsh\/70195ec1\/clip_image005_thumb.jpg\" border=\"0\" alt=\"clip_image005\" title=\"clip_image005\" width=\"416\" height=\"49\" \/><\/a><\/span>\n<\/p>\n<p><span style=\"line-height: 13pt\"><font face=\"Calibri\"><font style=\"font-size: 11pt\">If you need a supporting index, you still need to provide this structure in the read-write database, but when a query can be optimized using statistics alone &#8211; this is definitely a welcome new feature.<\/font><\/font><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>You may have already heard that SQL Server 2012 adds automatic generation of statistics for AlwaysOn availability group readable secondaries, storing the statistics in tempdb.&nbsp; This functionality was also extended to other areas beyond just AlwaysOn availability groups as I&rsquo;ll demonstrate next&hellip; Using the AdventureWorksDWDenali database, I&rsquo;ll start by checking the current statistics on the [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[28],"tags":[],"class_list":["post-502","post","type-post","status-publish","format-standard","hentry","category-performance"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.9.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Temporary Statistics for Database Snapshots in SQL Server 2012 - Joe Sack<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqlskills.com\/blogs\/joe\/temporary-statistics-for-database-snapshots-in-sql-server-2012\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Temporary Statistics for Database Snapshots in SQL Server 2012 - Joe Sack\" \/>\n<meta property=\"og:description\" content=\"You may have already heard that SQL Server 2012 adds automatic generation of statistics for AlwaysOn availability group readable secondaries, storing the statistics in tempdb.&nbsp; This functionality was also extended to other areas beyond just AlwaysOn availability groups as I&rsquo;ll demonstrate next&hellip; Using the AdventureWorksDWDenali database, I&rsquo;ll start by checking the current statistics on the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/joe\/temporary-statistics-for-database-snapshots-in-sql-server-2012\/\" \/>\n<meta property=\"og:site_name\" content=\"Joe Sack\" \/>\n<meta property=\"article:published_time\" content=\"2012-03-20T05:43:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-01-03T04:32:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-content\/uploads\/windows-live-writer\/temporary-statistics-for-database-snapsh\/72365d8a\/clip_image001_thumb.png\" \/>\n<meta name=\"author\" content=\"Joseph Sack\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joseph Sack\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/temporary-statistics-for-database-snapshots-in-sql-server-2012\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/temporary-statistics-for-database-snapshots-in-sql-server-2012\/\",\"name\":\"Temporary Statistics for Database Snapshots in SQL Server 2012 - Joe Sack\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#website\"},\"datePublished\":\"2012-03-20T05:43:00+00:00\",\"dateModified\":\"2013-01-03T04:32:11+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/533eb0113a15fb5a6e8067a49e4ae648\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/temporary-statistics-for-database-snapshots-in-sql-server-2012\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/joe\/temporary-statistics-for-database-snapshots-in-sql-server-2012\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/temporary-statistics-for-database-snapshots-in-sql-server-2012\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Performance\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/category\/performance\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Temporary Statistics for Database Snapshots in SQL Server 2012\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#website\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/\",\"name\":\"Joe Sack\",\"description\":\"SQL Server Performance Tuning, High Availability and Disaster Recovery Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/533eb0113a15fb5a6e8067a49e4ae648\",\"name\":\"Joseph Sack\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a4b39a7719a6bfff1add3ec00527810734579ee114d6d983e8e68f937b77be96?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a4b39a7719a6bfff1add3ec00527810734579ee114d6d983e8e68f937b77be96?s=96&d=mm&r=g\",\"caption\":\"Joseph Sack\"},\"description\":\"Joe Sack is a Principal Consultant with SQLskills. He has worked as a SQL Server professional since 1997 and has supported and developed for SQL Server environments in financial services, IT consulting, manufacturing, retail and the real estate industry. Prior to joining SQLskills he worked at Microsoft as a Premier Field Engineer supporting very large enterprise customer environments. He was responsible for providing deep SQL Server advisory services, training, troubleshooting and ongoing solutions guidance. His areas of expertise include performance tuning, scalability, T-SQL development and high-availability. In 2006 Joe earned the \u201cMicrosoft Certified Master: SQL Server 2005\u201d certification and in 2008 he earned the \u201cMicrosoft Certified Master: SQL Server 2008\u201d certification. In 2009 he took over responsibility for the entire SQL Server Microsoft Certified Master program and held that post until 2011. He was given the SQL Server MVP award in 2013.\",\"sameAs\":[\"http:\/\/3.209.169.194\/blogs\/joe\",\"https:\/\/twitter.com\/https:\/\/twitter.com\/josephsack\"],\"url\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/author\/joe\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Temporary Statistics for Database Snapshots in SQL Server 2012 - Joe Sack","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sqlskills.com\/blogs\/joe\/temporary-statistics-for-database-snapshots-in-sql-server-2012\/","og_locale":"en_US","og_type":"article","og_title":"Temporary Statistics for Database Snapshots in SQL Server 2012 - Joe Sack","og_description":"You may have already heard that SQL Server 2012 adds automatic generation of statistics for AlwaysOn availability group readable secondaries, storing the statistics in tempdb.&nbsp; This functionality was also extended to other areas beyond just AlwaysOn availability groups as I&rsquo;ll demonstrate next&hellip; Using the AdventureWorksDWDenali database, I&rsquo;ll start by checking the current statistics on the [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/joe\/temporary-statistics-for-database-snapshots-in-sql-server-2012\/","og_site_name":"Joe Sack","article_published_time":"2012-03-20T05:43:00+00:00","article_modified_time":"2013-01-03T04:32:11+00:00","og_image":[{"url":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-content\/uploads\/windows-live-writer\/temporary-statistics-for-database-snapsh\/72365d8a\/clip_image001_thumb.png"}],"author":"Joseph Sack","twitter_misc":{"Written by":"Joseph Sack","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/temporary-statistics-for-database-snapshots-in-sql-server-2012\/","url":"https:\/\/www.sqlskills.com\/blogs\/joe\/temporary-statistics-for-database-snapshots-in-sql-server-2012\/","name":"Temporary Statistics for Database Snapshots in SQL Server 2012 - Joe Sack","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#website"},"datePublished":"2012-03-20T05:43:00+00:00","dateModified":"2013-01-03T04:32:11+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/533eb0113a15fb5a6e8067a49e4ae648"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/temporary-statistics-for-database-snapshots-in-sql-server-2012\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/joe\/temporary-statistics-for-database-snapshots-in-sql-server-2012\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/temporary-statistics-for-database-snapshots-in-sql-server-2012\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/joe\/"},{"@type":"ListItem","position":2,"name":"Performance","item":"https:\/\/www.sqlskills.com\/blogs\/joe\/category\/performance\/"},{"@type":"ListItem","position":3,"name":"Temporary Statistics for Database Snapshots in SQL Server 2012"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/joe\/","name":"Joe Sack","description":"SQL Server Performance Tuning, High Availability and Disaster Recovery Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/joe\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/533eb0113a15fb5a6e8067a49e4ae648","name":"Joseph Sack","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a4b39a7719a6bfff1add3ec00527810734579ee114d6d983e8e68f937b77be96?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a4b39a7719a6bfff1add3ec00527810734579ee114d6d983e8e68f937b77be96?s=96&d=mm&r=g","caption":"Joseph Sack"},"description":"Joe Sack is a Principal Consultant with SQLskills. He has worked as a SQL Server professional since 1997 and has supported and developed for SQL Server environments in financial services, IT consulting, manufacturing, retail and the real estate industry. Prior to joining SQLskills he worked at Microsoft as a Premier Field Engineer supporting very large enterprise customer environments. He was responsible for providing deep SQL Server advisory services, training, troubleshooting and ongoing solutions guidance. His areas of expertise include performance tuning, scalability, T-SQL development and high-availability. In 2006 Joe earned the \u201cMicrosoft Certified Master: SQL Server 2005\u201d certification and in 2008 he earned the \u201cMicrosoft Certified Master: SQL Server 2008\u201d certification. In 2009 he took over responsibility for the entire SQL Server Microsoft Certified Master program and held that post until 2011. He was given the SQL Server MVP award in 2013.","sameAs":["http:\/\/3.209.169.194\/blogs\/joe","https:\/\/twitter.com\/https:\/\/twitter.com\/josephsack"],"url":"https:\/\/www.sqlskills.com\/blogs\/joe\/author\/joe\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/posts\/502","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/comments?post=502"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/posts\/502\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/media?parent=502"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/categories?post=502"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/tags?post=502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}