{"id":514,"date":"2012-02-06T13:20:00","date_gmt":"2012-02-06T13:20:00","guid":{"rendered":"\/blogs\/paul\/post\/Code-to-list-potential-cluster-key-space-savings-per-table.aspx"},"modified":"2017-04-13T09:49:48","modified_gmt":"2017-04-13T16:49:48","slug":"code-to-list-potential-cluster-key-space-savings-per-table","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/paul\/code-to-list-potential-cluster-key-space-savings-per-table\/","title":{"rendered":"Code to list potential cluster key space savings per table"},"content":{"rendered":"<p>\n<font face=\"verdana,geneva\" size=\"2\">Back in January I posted the <\/font><a href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/survey-results-how-cluster-key-size-can-lead-to-gbs-of-wasted-space\/\" target=\"_blank\"><font face=\"verdana,geneva\" size=\"2\">results of the cluster key size survey<\/font><\/a><font face=\"verdana,geneva\" size=\"2\"> I ran in 2011 and explained how the larger the cluster key is on your table, the more space is being wasted in all the nonclustered index rows. Check it out if you haven&#39;t already.<\/font>\n<\/p>\n<p>\n<font face=\"verdana,geneva\" size=\"2\">I&#39;ve finally put together the code that will run through all your databases and give you a per-table indication of how much space is being taken up by cluster keys in nonclustered indexes, and the potential space savings if you converted the cluster key to a single 8-byte bigint. You can get it below or from here: <a href=\"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-content\/uploads\/2012\/2\/keyspacesavingssingleresultset.zip\">KeySpaceSavingsSingleResultSet.zip (1.57 kb)<\/a><\/font>\n<\/p>\n<p>\n<font face=\"verdana,geneva\" size=\"2\">You can mess around with the code to do what you want. And I&#39;m continuing to use <font face=\"courier new,courier\">sp_msforeachdb<\/font> because it&#39;s the fastest way for me to knock out code for you, and it continues to irritate my good friend <a href=\"http:\/\/sqlblog.com\/blogs\/aaron_bertrand\/archive\/2010\/12\/29\/a-more-reliable-and-more-flexible-sp-msforeachdb.aspx\" target=\"_blank\">Aaron Bertrand<\/a> :-)<\/font>\n<\/p>\n<p>\n<font face=\"verdana,geneva\" size=\"2\">Enjoy!<\/font>\n<\/p>\n<p>\n<font face=\"courier new,courier\" size=\"2\">\/*============================================================================<br \/>\n&nbsp; File:&nbsp;&nbsp;&nbsp;&nbsp; KeySpaceSavingsSingleResultSet.sql<\/font>\n<\/p>\n<p>\n<font face=\"courier new,courier\" size=\"2\">&nbsp; Summary:&nbsp; Potential cluster key space savings <\/font>\n<\/p>\n<p>\n<font face=\"courier new,courier\" size=\"2\">&nbsp; SQL Server Versions: 2005 onwards<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n&nbsp; Written by Paul S. Randal, SQLskills.com<\/font>\n<\/p>\n<p>\n<font face=\"courier new,courier\" size=\"2\">&nbsp; (c) 2012, SQLskills.com. All rights reserved.<\/font>\n<\/p>\n<p>\n<font face=\"courier new,courier\" size=\"2\">&nbsp; For more scripts and sample code, check out <br \/>\n&nbsp;&nbsp;&nbsp; <\/font><a href=\"https:\/\/www.sqlskills.com\/\"><font face=\"courier new,courier\" size=\"2\">http:\/\/www.SQLskills.com<\/font><\/a>\n<\/p>\n<p>\n<font face=\"courier new,courier\" size=\"2\">&nbsp; You may alter this code for your own *non-commercial* purposes. You may<br \/>\n&nbsp; republish altered code as long as you include this copyright and give due<br \/>\n&nbsp; credit, but you must obtain prior permission before blogging this code.<br \/>\n&nbsp; <br \/>\n&nbsp; THIS CODE AND INFORMATION ARE PROVIDED &quot;AS IS&quot; WITHOUT WARRANTY OF <br \/>\n&nbsp; ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED <br \/>\n&nbsp; TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\/OR FITNESS FOR A<br \/>\n&nbsp; PARTICULAR PURPOSE.<br \/>\n============================================================================*\/<\/font>\n<\/p>\n<p>\n<font face=\"courier new,courier\" size=\"2\">IF EXISTS (SELECT * FROM msdb.sys.objects WHERE [name] = &#39;SQLskillsIKSpace&#39;)<br \/>\n&nbsp;&nbsp;&nbsp; DROP TABLE msdb.dbo.SQLskillsIKSpace;<br \/>\nGO<br \/>\nCREATE TABLE msdb.dbo.SQLskillsIKSpace (<br \/>\n&nbsp;&nbsp;&nbsp; DatabaseID&nbsp;SMALLINT,<br \/>\n&nbsp;SchemaName&nbsp;SYSNAME,<br \/>\n&nbsp;ObjectName&nbsp;SYSNAME,<br \/>\n&nbsp;&nbsp;&nbsp; ObjectID&nbsp;INT,<br \/>\n&nbsp;&nbsp;&nbsp; IndexCount&nbsp;SMALLINT DEFAULT (0),<br \/>\n&nbsp;&nbsp;&nbsp; TableRows&nbsp;BIGINT DEFAULT (0),<br \/>\n&nbsp;&nbsp;&nbsp; KeyCount&nbsp;SMALLINT DEFAULT (0),<br \/>\n&nbsp;&nbsp;&nbsp; KeyWidth&nbsp;SMALLINT DEFAULT (0));<br \/>\nGO <\/font>\n<\/p>\n<p>\n<font face=\"courier new,courier\" size=\"2\">EXEC sp_MSforeachdb <br \/>\n&nbsp;&nbsp;&nbsp; N&#39;IF EXISTS (SELECT 1 FROM (SELECT DISTINCT [name] <br \/>\n&nbsp;&nbsp;&nbsp; FROM sys.databases WHERE [state_desc] = &#39;&#39;ONLINE&#39;&#39;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND [database_id] &gt; 4<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND [name] != &#39;&#39;pubs&#39;&#39;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND [name] != &#39;&#39;Northwind&#39;&#39;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND [name] != &#39;&#39;distribution&#39;&#39;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND [name] NOT LIKE &#39;&#39;ReportServer%&#39;&#39;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND [name] NOT LIKE &#39;&#39;Adventure%&#39;&#39;) AS names WHERE [name] = &#39;&#39;?&#39;&#39;)<br \/>\nBEGIN<br \/>\nUSE [?] <\/font>\n<\/p>\n<p>\n<font face=\"courier new,courier\" size=\"2\">INSERT INTO msdb.dbo.SQLskillsIKSpace<br \/>\n(DatabaseID, SchemaName, ObjectName, ObjectID)<br \/>\nSELECT DB_ID (&#39;&#39;?&#39;&#39;), SCHEMA_NAME (o.[schema_id]), OBJECT_NAME (o.[object_id]), o.[object_id]<br \/>\nFROM sys.objects o<br \/>\nWHERE o.[type_desc] IN (&#39;&#39;USER_TABLE&#39;&#39;, &#39;&#39;VIEW&#39;&#39;)<br \/>\n&nbsp;&nbsp;&nbsp; AND o.[is_ms_shipped] = 0<br \/>\n&nbsp;&nbsp;&nbsp; AND EXISTS (<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT *<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM sys.indexes<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE [index_id] = 1<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND [object_id] = o.[object_id]); <\/font>\n<\/p>\n<p>\n<font face=\"courier new,courier\" size=\"2\">UPDATE msdb.dbo.SQLskillsIKSpace<br \/>\nSET [TableRows] = (<br \/>\n&nbsp;&nbsp;&nbsp; SELECT SUM ([rows]) <br \/>\n&nbsp;&nbsp;&nbsp; FROM sys.partitions p<br \/>\n&nbsp;&nbsp;&nbsp; WHERE p.[object_id] = [ObjectID]<br \/>\n&nbsp;&nbsp;&nbsp; AND p.[index_id] = 1)<br \/>\nWHERE [DatabaseID] = DB_ID (&#39;&#39;?&#39;&#39;);<br \/>\n&nbsp;<br \/>\nUPDATE msdb.dbo.SQLskillsIKSpace<br \/>\nSET [IndexCount] = (<br \/>\n&nbsp;&nbsp;&nbsp; SELECT COUNT (*) <br \/>\n&nbsp;&nbsp;&nbsp; FROM sys.indexes i<br \/>\n&nbsp;&nbsp;&nbsp; WHERE i.[object_id] = [ObjectID]<br \/>\n&nbsp;&nbsp;&nbsp; AND i.[is_hypothetical] = 0<br \/>\n&nbsp;&nbsp;&nbsp; AND i.[is_disabled] = 0<br \/>\n&nbsp;&nbsp;&nbsp; AND i.[index_id] != 1)<br \/>\nWHERE [DatabaseID] = DB_ID (&#39;&#39;?&#39;&#39;); <\/font>\n<\/p>\n<p>\n<font face=\"courier new,courier\" size=\"2\">UPDATE msdb.dbo.SQLskillsIKSpace<br \/>\nSET [KeyCount] = (<br \/>\n&nbsp;&nbsp;&nbsp; SELECT COUNT (*) <br \/>\n&nbsp;&nbsp;&nbsp; FROM sys.index_columns ic<br \/>\n&nbsp;&nbsp;&nbsp; WHERE ic.[object_id] = [ObjectID]<br \/>\n&nbsp;&nbsp;&nbsp; AND ic.[index_id] = 1)<br \/>\nWHERE [DatabaseID] = DB_ID (&#39;&#39;?&#39;&#39;); <\/font>\n<\/p>\n<p>\n<font face=\"courier new,courier\" size=\"2\">UPDATE msdb.dbo.SQLskillsIKSpace<br \/>\nSET [KeyWidth] = (<br \/>\n&nbsp;&nbsp;&nbsp; SELECT SUM (c.[max_length])<br \/>\n&nbsp;&nbsp;&nbsp; FROM sys.columns c<br \/>\n&nbsp;&nbsp;&nbsp; JOIN sys.index_columns ic<br \/>\n&nbsp;&nbsp;&nbsp; ON c.[object_id] = ic.[object_id]<br \/>\n&nbsp;&nbsp;&nbsp; AND c.[object_id] = [ObjectID]<br \/>\n&nbsp;&nbsp;&nbsp; AND ic.[column_id] = c.[column_id]<br \/>\n&nbsp;&nbsp;&nbsp; AND ic.[index_id] = 1)<br \/>\nWHERE [DatabaseID] = DB_ID (&#39;&#39;?&#39;&#39;); <\/font>\n<\/p>\n<p>\n<font face=\"courier new,courier\" size=\"2\">DELETE msdb.dbo.SQLskillsIKSpace<br \/>\nWHERE<br \/>\n&nbsp;&nbsp;&nbsp; ([KeyCount] = 1 AND [KeyWidth] &lt; 9)<br \/>\n&nbsp;&nbsp;&nbsp; OR [IndexCount] = 0 OR [TableRows] = 0; <\/font>\n<\/p>\n<p>\n<font face=\"courier new,courier\" size=\"2\">END&#39;;<br \/>\nGO <\/font>\n<\/p>\n<p>\n<font face=\"courier new,courier\" size=\"2\">SELECT<br \/>\n&nbsp;DB_NAME ([DatabaseID]) AS [Database],<br \/>\n&nbsp;[SchemaName] AS [Schema],<br \/>\n&nbsp;[ObjectName] AS [Table],<br \/>\n&nbsp;&nbsp;&nbsp; [IndexCount] AS [NCIndexes],<br \/>\n&nbsp;&nbsp;&nbsp; [KeyCount] AS [ClusterKeys],<br \/>\n&nbsp;&nbsp;&nbsp; [KeyWidth],<br \/>\n&nbsp;&nbsp;&nbsp; [TableRows],<br \/>\n&nbsp;&nbsp;&nbsp; [IndexCount] * [TableRows] * [KeyWidth] AS [KeySpaceInBytes],<br \/>\n&nbsp;&nbsp;&nbsp; ([IndexCount] * [TableRows] * ([KeyWidth] &#8211; 8)) AS [PotentialSavings]<br \/>\nFROM msdb.dbo.SQLskillsIKSpace<br \/>\nORDER BY [PotentialSavings] DESC; <\/font>\n<\/p>\n<p>\n<font face=\"courier new,courier\" size=\"2\">DROP TABLE msdb.dbo.SQLskillsIKSpace;<br \/>\nGO<\/font>\n<\/p>\n<p>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Back in January I posted the results of the cluster key size survey I ran in 2011 and explained how the larger the cluster key is on your table, the more space is being wasted in all the nonclustered index rows. Check it out if you haven&#39;t already. I&#39;ve finally put together the code that [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38,47,66],"tags":[],"class_list":["post-514","post","type-post","status-publish","format-standard","hentry","category-example-scripts","category-indexes-from-every-angle","category-performance-tuning"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Code to list potential cluster key space savings per table - Paul S. Randal<\/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\/paul\/code-to-list-potential-cluster-key-space-savings-per-table\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Code to list potential cluster key space savings per table - Paul S. Randal\" \/>\n<meta property=\"og:description\" content=\"Back in January I posted the results of the cluster key size survey I ran in 2011 and explained how the larger the cluster key is on your table, the more space is being wasted in all the nonclustered index rows. Check it out if you haven&#039;t already. I&#039;ve finally put together the code that [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/paul\/code-to-list-potential-cluster-key-space-savings-per-table\/\" \/>\n<meta property=\"og:site_name\" content=\"Paul S. Randal\" \/>\n<meta property=\"article:published_time\" content=\"2012-02-06T13:20:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-04-13T16:49:48+00:00\" \/>\n<meta name=\"author\" content=\"Paul Randal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Paul Randal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/code-to-list-potential-cluster-key-space-savings-per-table\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/code-to-list-potential-cluster-key-space-savings-per-table\/\",\"name\":\"Code to list potential cluster key space savings per table - Paul S. Randal\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#website\"},\"datePublished\":\"2012-02-06T13:20:00+00:00\",\"dateModified\":\"2017-04-13T16:49:48+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/code-to-list-potential-cluster-key-space-savings-per-table\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/paul\/code-to-list-potential-cluster-key-space-savings-per-table\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/code-to-list-potential-cluster-key-space-savings-per-table\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Code to list potential cluster key space savings per table\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#website\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/\",\"name\":\"Paul S. Randal\",\"description\":\"In Recovery...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce\",\"name\":\"Paul Randal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g\",\"caption\":\"Paul Randal\"},\"sameAs\":[\"http:\/\/3.209.169.194\/blogs\/paul\"],\"url\":\"https:\/\/www.sqlskills.com\/blogs\/paul\/author\/paul\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Code to list potential cluster key space savings per table - Paul S. Randal","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\/paul\/code-to-list-potential-cluster-key-space-savings-per-table\/","og_locale":"en_US","og_type":"article","og_title":"Code to list potential cluster key space savings per table - Paul S. Randal","og_description":"Back in January I posted the results of the cluster key size survey I ran in 2011 and explained how the larger the cluster key is on your table, the more space is being wasted in all the nonclustered index rows. Check it out if you haven&#39;t already. I&#39;ve finally put together the code that [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/paul\/code-to-list-potential-cluster-key-space-savings-per-table\/","og_site_name":"Paul S. Randal","article_published_time":"2012-02-06T13:20:00+00:00","article_modified_time":"2017-04-13T16:49:48+00:00","author":"Paul Randal","twitter_misc":{"Written by":"Paul Randal","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/code-to-list-potential-cluster-key-space-savings-per-table\/","url":"https:\/\/www.sqlskills.com\/blogs\/paul\/code-to-list-potential-cluster-key-space-savings-per-table\/","name":"Code to list potential cluster key space savings per table - Paul S. Randal","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#website"},"datePublished":"2012-02-06T13:20:00+00:00","dateModified":"2017-04-13T16:49:48+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/code-to-list-potential-cluster-key-space-savings-per-table\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/paul\/code-to-list-potential-cluster-key-space-savings-per-table\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/code-to-list-potential-cluster-key-space-savings-per-table\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/paul\/"},{"@type":"ListItem","position":2,"name":"Code to list potential cluster key space savings per table"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/paul\/","name":"Paul S. Randal","description":"In Recovery...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/paul\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/ffcec826c18782e1e0adf173826a7fce","name":"Paul Randal","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/paul\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0b6a266bba2f088f2551ef529293001bd73bf026bc1908b9866728c062beeeb6?s=96&d=mm&r=g","caption":"Paul Randal"},"sameAs":["http:\/\/3.209.169.194\/blogs\/paul"],"url":"https:\/\/www.sqlskills.com\/blogs\/paul\/author\/paul\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts\/514","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/comments?post=514"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/posts\/514\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/media?parent=514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/categories?post=514"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/paul\/wp-json\/wp\/v2\/tags?post=514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}