{"id":4353,"date":"2011-08-04T15:46:03","date_gmt":"2011-08-04T22:46:03","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/dataplatforminsider\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/"},"modified":"2024-01-22T22:50:02","modified_gmt":"2024-01-23T06:50:02","slug":"columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/","title":{"rendered":"Columnstore Indexes: A New Feature in SQL Server known as Project \u201cApollo\u201d"},"content":{"rendered":"<p class=\"MsoNormal\" style=\"line-height: normal;list-style-type: disc;margin: 0in 0in 10pt\"><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\"><br \/>\nDo you have a data warehouse?<span>\u00a0 <\/span>Do you wish your queries would run faster?<span>\u00a0 <\/span>If your answers are yes, check out the new columnstore index (aka Project \u201cApollo\u201d) in SQL Server Code Name \u201cDenali\u201d today!<\/p>\n<p><\/span><\/span><b><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\">Why use a column store?<\/p>\n<p><\/span><\/span><\/b><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\">SQL Server\u2019s traditional indexes, clustered and nonclustered, are based on the B-tree.<span>\u00a0 <\/span>B-trees are great for finding data that match a predicate on the primary key.<span>\u00a0 <\/span>They\u2019re also reasonably fast when you need to scan all the data in a table.<span>\u00a0 <\/span>So why use a column store?<span>\u00a0 <\/span>There are two main reasons:<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoListParagraphCxSpFirst\" style=\"line-height: 13pt;list-style-type: disc;text-indent: -0.25in;margin: 0in 0in 0pt 0.5in\"><span style=\"color: #000000\"><span style=\"line-height: 12pt\"><span><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt\">1.<\/span><\/span><span style=\"line-height: normal\"><span style=\"font-family: Times New Roman\"><span style=\"font-size: 7pt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><\/span><\/span><\/span><span style=\"font-family: Segoe UI\"><b><span style=\"line-height: 12pt\"><span style=\"font-size: 10pt\">Compression<\/span><\/span><\/b><span style=\"line-height: 12pt\"><span style=\"font-size: 10pt\">.<span>\u00a0 <\/span>Most general-purpose relational database management systems, including SQL Server, store data in row-wise fashion.<span>\u00a0 <\/span>This organization is sometimes called a row store.<span>\u00a0 <\/span>Both heaps and B-trees are row stores because they store the values from each column in a given row contiguously.<span>\u00a0 <\/span>When you want to find all the values associated with a row, having the data stored together on one page is very efficient.<span>\u00a0 <\/span>Storing data by rows is less ideal for compressing the data.<span>\u00a0 <\/span>Most compression algorithms exploit the similarities of a group of values.<span>\u00a0 <\/span>The values from different columns usually are not very similar.<span>\u00a0 <\/span>When data is stored row-wise, the number of rows per page is relatively few, so the opportunities to exploit similarity among values are limited.<span>\u00a0 <\/span>A column store organizes data in column-wise fashion.<span>\u00a0 <\/span>Data from a single column are stored contiguously.<span>\u00a0 <\/span>Usually there is repetition and similarity among values within a column.<span>\u00a0 <\/span>The column store organization allows compression algorithms to exploit that similarity.<\/p>\n<p><\/span><\/span><\/span><\/span><\/p>\n<p class=\"MsoListParagraphCxSpLast\" style=\"line-height: 13pt;list-style-type: disc;text-indent: -0.25in;margin: 0in 0in 10pt 0.5in\"><span style=\"color: #000000\"><span style=\"line-height: 12pt\"><span><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt\">2.<\/span><\/span><span style=\"line-height: normal\"><span style=\"font-family: Times New Roman\"><span style=\"font-size: 7pt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><\/span><\/span><\/span><span style=\"font-family: Segoe UI\"><b><span style=\"line-height: 12pt\"><span style=\"font-size: 10pt\">Fetching only needed columns<\/span><\/span><\/b><span style=\"line-height: 12pt\"><span style=\"font-size: 10pt\">.<span>\u00a0 <\/span>When data is stored column-wise, each column can be accessed independently of the other columns. <span>\u00a0<\/span>If a query touches only a subset of the columns in a table, IO is reduced.<span>\u00a0 <\/span>Data warehouse fact tables are often wide as well long.<span>\u00a0 <\/span>Typical queries touch only 10 \u2013 15% of the columns.<span>\u00a0 <\/span>That means a column store can reduce IO by 85 \u2013 90%, a huge speedup in systems that are often IO bound, meaning the query speed is limited by the speed at which needed data can be transferred from disk into memory. <\/span><\/span><\/span><\/span><\/p>\n<p class=\"MsoNormal\" style=\"line-height: normal;list-style-type: disc;margin: 0in 0in 10pt\"><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\">It\u2019s clear that cold start queries, when all the data must be fetched from disk, will benefit from compression and eliminating unneeded columns.<span>\u00a0 <\/span>Warm start queries benefit too, because more of your working set fits in memory.<span>\u00a0 <\/span>At some point, however, eliminating IO moves the bottleneck to the CPU.<span>\u00a0 <\/span>We\u2019ve added huge value here too, by introducing a new query execution paradigm, called <i>batch mode<\/i> processing.<span>\u00a0 <\/span>When the query uses at least one columnstore index, batch mode processing can speed up joins, aggregations, and filtering.<span>\u00a0 <\/span>During batch mode processing, columnar data is organized in vectors during query execution.<span>\u00a0 <\/span>Sets of data are processed a-batch-at-a-time instead of a-row-at-a-time, using highly efficient algorithms designed to take advantage of modern hardware.<span>\u00a0 <\/span>The query optimizer takes care of choosing when to use batch mode processing and when to use traditional row mode query processing.<\/p>\n<p><\/span><\/span><b><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\">Why not use a column store for everything?<\/p>\n<p><\/span><\/span><\/b><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\">While it\u2019s possible to build a system that stores all data in columnar format, row stores still have advantages in some situations.<span>\u00a0 <\/span>A B-tree is a very efficient data structure for looking up or modifying a single row of data.<span>\u00a0 <\/span>So if your workload entails many single row lookups and many updates and deletes, which is common for OLTP workloads, you will probably continue to use row store technology.<span>\u00a0 <\/span>Data warehouse workloads typically scan, aggregate, and join large amounts of data.<span>\u00a0 <\/span>In those scenarios, column stores really shine. <\/span><\/span><\/p>\n<p class=\"MsoNormal\" style=\"line-height: normal;list-style-type: disc;margin: 0in 0in 10pt\"><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\">SQL Server now provides you with a choice.<span>\u00a0 <\/span>You can build columnstore indexes on your big data warehouse tables and get the benefits of column store technology and batch mode processing without giving up the benefits of traditional row store technology when a B-tree is the right tool for the job.<\/p>\n<p><\/span><\/span><b><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\">Try it out: Build a columnstore index<\/p>\n<p><\/span><\/span><\/b><span lang=\"EN\"><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\">Columnstore indexes are available in CTP 3 of SQL Server Code Name \u201cDenali.\u201d<span>\u00a0 <\/span>You can create a columnstore index on your table by using a slight variation on existing syntax for creating indexes. To create an index named <i>mycolumnstoreindex<\/i> on a table named <i>mytable<\/i> with three columns, named <i>col1<\/i>, <i>col2<\/i>, and <i>col3<\/i>, use the following syntax:<\/p>\n<p><\/span><\/span><\/span><span lang=\"EN\"><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\">CREATE NONCLUSTERED COLUMNSTORE INDEX mycolumnstoreindex ON mytable (col1, col2, col3);<\/p>\n<p><\/span><\/span><\/span><span lang=\"EN\"><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\">To avoid typing the names of all the columns in the table, you can use the Object Explorer in Management Studio to create the index as follows:<\/span><\/span><\/span><\/p>\n<ol style=\"line-height: normal;margin-top: 0in;margin-bottom: 0in\" type=\"1\">\n<li class=\"MsoNormal\" style=\"line-height: 13pt;margin: 0in 0in 10pt\"><span lang=\"EN\" style=\"line-height: 12pt\"><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\">Expand the tree structure for the table and then right click on the Indexes icon. <\/span><\/span><\/span><\/li>\n<li class=\"MsoNormal\" style=\"line-height: 13pt;margin: 0in 0in 10pt\"><span lang=\"EN\" style=\"line-height: 12pt\"><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\">Select <b>New Index<\/b> and then <b>Nonclustered columnstore index<\/b> <\/span><\/span><\/span><\/li>\n<li class=\"MsoNormal\" style=\"line-height: 13pt;margin: 0in 0in 10pt\"><span lang=\"EN\" style=\"line-height: 12pt\"><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\">Click <b>Add<\/b> in the wizard and it will give you a list of columns with check boxes. <\/span><\/span><\/span><\/li>\n<li class=\"MsoNormal\" style=\"line-height: 13pt;margin: 0in 0in 10pt\"><span lang=\"EN\" style=\"line-height: 12pt\"><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\">You can either choose columns individually or click the box next to Name at the top, which will put checks next to all the columns. Click OK. <\/span><\/span><\/span><\/li>\n<li class=\"MsoNormal\" style=\"line-height: 13pt;margin: 0in 0in 10pt\"><span lang=\"EN\" style=\"line-height: 12pt\"><span style=\"color: #000000;font-family: Segoe UI;font-size: small\">Click OK.<\/span><\/span><\/li>\n<\/ol>\n<p class=\"MsoNormal\" style=\"line-height: 13pt;margin: 0in 0in 10pt\"><span lang=\"EN\" style=\"line-height: 12pt\"><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\"><br \/>\n<\/span><\/span><\/span><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\">Typically you will want to put all the columns in your table into the columnstore index.<span>\u00a0 <\/span>It does not matter what order you list the columns because a columnstore index does not have a key like a B-tree index does.<span>\u00a0 <\/span>Internally, the data will be re-ordered automatically to get the best compression.<\/p>\n<p><\/span><\/span><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\">Be sure to populate the table with data before you create the columnstore index.<span>\u00a0 <\/span>Once you create the columnstore index, you cannot directly add, delete, or modify data in the table.<span>\u00a0 <\/span>Instead, you can either:<br \/>\n<\/span><\/span><\/p>\n<p class=\"MsoListParagraphCxSpFirst\" style=\"line-height: 13pt;list-style-type: disc;text-indent: -0.25in;margin: 0in 0in 0pt 0.5in\"><span style=\"color: #000000\"><span style=\"line-height: 12pt\"><span><span style=\"font-family: Symbol\"><span style=\"font-size: 10pt\">\u00b7<\/span><\/span><span style=\"line-height: normal\"><span style=\"font-family: Times New Roman\"><span style=\"font-size: 7pt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><\/span><\/span><\/span><span style=\"line-height: 12pt\"><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt\">Disable or drop the columnstore index.<span>\u00a0 <\/span>You will then be able to update the table and then rebuild the columnstore index<br \/>\n<\/span><\/span><\/span><\/span><\/p>\n<p class=\"MsoListParagraphCxSpLast\" style=\"line-height: 13pt;list-style-type: disc;text-indent: -0.25in;margin: 0in 0in 10pt 0.5in\"><span style=\"color: #000000\"><span style=\"line-height: 12pt\"><span><span style=\"font-family: Symbol\"><span style=\"font-size: 10pt\">\u00b7<\/span><\/span><span style=\"line-height: normal\"><span style=\"font-family: Times New Roman\"><span style=\"font-size: 7pt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><\/span><\/span><\/span><span style=\"line-height: 12pt\"><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt\">Use partition switching.<span>\u00a0 <\/span>If your table is partitioned, you can put new data into a staging table, build a columnstore index on the staging table, and switch the staging table into an empty partition of your main table.<span>\u00a0 <\/span>Similarly, you could modify existing data by first switching a partition from the main table into a staging table, disable the columnstore index on the staging table, perform your updates, rebuild the columnstore index, and switch the partition back into the main table.<\/span><\/span><\/span><\/span><\/p>\n<p class=\"MsoNormal\" style=\"line-height: normal;list-style-type: disc;margin: 0in 0in 10pt\"><span style=\"color: #000000;font-family: Segoe UI\"><span style=\"font-size: 10pt\">For more information about using columnstore indexes, check out the MSDN article <\/span><\/span><span style=\"font-size: 10pt\"><a style=\"cursor: auto\" href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/gg492088(v=SQL.110).aspx\"><span style=\"color: #0000ff;font-family: Segoe UI\"><u>Columnstore Indexes<\/u><\/span><\/a><span style=\"color: #000000;font-family: Segoe UI\"> and our new SQL <\/span><a style=\"cursor: auto\" href=\"http:\/\/social.technet.microsoft.com\/wiki\/contents\/articles\/sql-server-columnstore-index-faq.aspx\"><span style=\"color: #0000ff;font-family: Segoe UI\"><u>Server Columnstore Index FAQ<\/u><\/span><\/a><\/span><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\"> on the TechNet wiki.<br \/>\n<\/span><\/span><span style=\"font-family: Segoe UI\"><span style=\"font-size: 10pt;color: #000000\"><br \/>\n<\/span><\/span><\/p>\n<p class=\"MsoNormal\" style=\"line-height: normal;list-style-type: disc;margin: 0in 0in 0pt\"><span style=\"font-family: Calibri\"><span style=\"font-size: 11pt;color: #000000\"><br \/>\nSusan Price<\/span><\/span><\/p>\n<p class=\"MsoNormal\" style=\"line-height: normal;list-style-type: disc;margin: 0in 0in 0pt\"><span style=\"font-family: Calibri\"><span style=\"font-size: 11pt;color: #000000\">Senior Program Manager<\/span><\/span><\/p>\n<p class=\"MsoNormal\" style=\"line-height: normal;list-style-type: disc;margin: 0in 0in 0pt\"><span style=\"font-family: Calibri\"><span style=\"font-size: 11pt;color: #000000\">SQL Server Database Engine Team<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\" style=\"line-height: normal;list-style-type: disc;margin: 0in 0in 10pt\">\n<div id=\"scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:0b6b7a97-2366-46ea-a7ea-887d4caf9a5d\" class=\"wlWriterEditableSmartContent\" style=\"margin: 0px;float: none;padding: 0px\">\n<div id=\"17f9ab4e-b591-4ca6-a1fd-a304f30c7765\" style=\"margin: 0px;padding: 0px\">\n<div><a href=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/8306.videocdbfa3b4a1d6.jpg\" target=\"_new\" rel=\"noopener\"><img decoding=\"async\" style=\"border-style: none\" src=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/8306.videocdbfa3b4a1d6.jpg\" alt=\"\" \/><\/a><\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Do you have a data warehouse?\u00a0 Do you wish your queries would run faster?\u00a0 If your answers are yes, check out the new columnstore index (aka Project \u201cApollo\u201d) in SQL Server Code Name \u201cDenali\u201d today! Why use a column store? SQL Server\u2019s traditional indexes, clustered and nonclustered, are based on the B-tree.<\/p>\n","protected":false},"author":1457,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","footnotes":""},"post_tag":[],"product":[],"content-type":[2448],"topic":[],"coauthors":[2487],"class_list":["post-4353","post","type-post","status-publish","format-standard","hentry","content-type-updates","review-flag-1593580410-819","review-flag-1-1593580431-15","review-flag-2-1593580436-981","review-flag-3-1593580441-293","review-flag-new-1593580247-437"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Columnstore Indexes: A New Feature in SQL Server known as Project \u201cApollo\u201d - Microsoft SQL Server Blog<\/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.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Columnstore Indexes: A New Feature in SQL Server known as Project \u201cApollo\u201d - Microsoft SQL Server Blog\" \/>\n<meta property=\"og:description\" content=\"Do you have a data warehouse?\u00a0 Do you wish your queries would run faster?\u00a0 If your answers are yes, check out the new columnstore index (aka Project \u201cApollo\u201d) in SQL Server Code Name \u201cDenali\u201d today! Why use a column store? SQL Server\u2019s traditional indexes, clustered and nonclustered, are based on the B-tree.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft SQL Server Blog\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/sqlserver\" \/>\n<meta property=\"article:published_time\" content=\"2011-08-04T22:46:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-23T06:50:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/8306.videocdbfa3b4a1d6.jpg\" \/>\n<meta name=\"author\" content=\"SQL Server Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SQLServer\" \/>\n<meta name=\"twitter:site\" content=\"@SQLServer\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"SQL Server Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 min read\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/\"},\"author\":[{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/author\/sql-server-team\/\",\"@type\":\"Person\",\"@name\":\"SQL Server Team\"}],\"headline\":\"Columnstore Indexes: A New Feature in SQL Server known as Project \u201cApollo\u201d\",\"datePublished\":\"2011-08-04T22:46:03+00:00\",\"dateModified\":\"2024-01-23T06:50:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/\"},\"wordCount\":1040,\"commentCount\":6,\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/8306.videocdbfa3b4a1d6.jpg\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/\",\"name\":\"Columnstore Indexes: A New Feature in SQL Server known as Project \u201cApollo\u201d - Microsoft SQL Server Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/8306.videocdbfa3b4a1d6.jpg\",\"datePublished\":\"2011-08-04T22:46:03+00:00\",\"dateModified\":\"2024-01-23T06:50:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/#primaryimage\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/8306.videocdbfa3b4a1d6.jpg\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/8306.videocdbfa3b4a1d6.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Columnstore Indexes: A New Feature in SQL Server known as Project \u201cApollo\u201d\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/\",\"name\":\"Microsoft SQL Server Blog\",\"description\":\"Official News from Microsoft\u2019s Information Platform\",\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization\",\"name\":\"Microsoft SQL Server Blog\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"width\":259,\"height\":194,\"caption\":\"Microsoft SQL Server Blog\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"http:\/\/www.facebook.com\/sqlserver\",\"https:\/\/x.com\/SQLServer\",\"https:\/\/www.youtube.com\/user\/MSCloudOS\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Columnstore Indexes: A New Feature in SQL Server known as Project \u201cApollo\u201d - Microsoft SQL Server Blog","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.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/","og_locale":"en_US","og_type":"article","og_title":"Columnstore Indexes: A New Feature in SQL Server known as Project \u201cApollo\u201d - Microsoft SQL Server Blog","og_description":"Do you have a data warehouse?\u00a0 Do you wish your queries would run faster?\u00a0 If your answers are yes, check out the new columnstore index (aka Project \u201cApollo\u201d) in SQL Server Code Name \u201cDenali\u201d today! Why use a column store? SQL Server\u2019s traditional indexes, clustered and nonclustered, are based on the B-tree.","og_url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/","og_site_name":"Microsoft SQL Server Blog","article_publisher":"http:\/\/www.facebook.com\/sqlserver","article_published_time":"2011-08-04T22:46:03+00:00","article_modified_time":"2024-01-23T06:50:02+00:00","og_image":[{"url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/8306.videocdbfa3b4a1d6.jpg","type":"","width":"","height":""}],"author":"SQL Server Team","twitter_card":"summary_large_image","twitter_creator":"@SQLServer","twitter_site":"@SQLServer","twitter_misc":{"Written by":"SQL Server Team","Est. reading time":"4 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/#article","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/"},"author":[{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/author\/sql-server-team\/","@type":"Person","@name":"SQL Server Team"}],"headline":"Columnstore Indexes: A New Feature in SQL Server known as Project \u201cApollo\u201d","datePublished":"2011-08-04T22:46:03+00:00","dateModified":"2024-01-23T06:50:02+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/"},"wordCount":1040,"commentCount":6,"publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/8306.videocdbfa3b4a1d6.jpg","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/","name":"Columnstore Indexes: A New Feature in SQL Server known as Project \u201cApollo\u201d - Microsoft SQL Server Blog","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/#primaryimage"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/8306.videocdbfa3b4a1d6.jpg","datePublished":"2011-08-04T22:46:03+00:00","dateModified":"2024-01-23T06:50:02+00:00","breadcrumb":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/#primaryimage","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/8306.videocdbfa3b4a1d6.jpg","contentUrl":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/8306.videocdbfa3b4a1d6.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2011\/08\/04\/columnstore-indexes-a-new-feature-in-sql-server-known-as-project-apollo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/"},{"@type":"ListItem","position":2,"name":"Columnstore Indexes: A New Feature in SQL Server known as Project \u201cApollo\u201d"}]},{"@type":"WebSite","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/","name":"Microsoft SQL Server Blog","description":"Official News from Microsoft\u2019s Information Platform","publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization","name":"Microsoft SQL Server Blog","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","contentUrl":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","width":259,"height":194,"caption":"Microsoft SQL Server Blog"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/"},"sameAs":["http:\/\/www.facebook.com\/sqlserver","https:\/\/x.com\/SQLServer","https:\/\/www.youtube.com\/user\/MSCloudOS"]}]}},"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts\/4353","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/users\/1457"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/comments?post=4353"}],"version-history":[{"count":0,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts\/4353\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/media?parent=4353"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/post_tag?post=4353"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/product?post=4353"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/content-type?post=4353"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/topic?post=4353"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/coauthors?post=4353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}