{"id":407,"date":"2011-02-07T22:07:29","date_gmt":"2011-02-08T00:07:29","guid":{"rendered":"http:\/\/fabriciolima.net\/blog\/?p=407"},"modified":"2016-07-23T22:47:59","modified_gmt":"2016-07-24T01:47:59","slug":"querys-do-dia-a-dia-como-visualizar-as-colunas-include-de-um-indice","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2011\/02\/07\/querys-do-dia-a-dia-como-visualizar-as-colunas-include-de-um-indice\/","title":{"rendered":"Querys do Dia a Dia: Como visualizar as colunas INCLUDE de um \u00cdndice"},"content":{"rendered":"<p>Fala Pessoal,<\/p>\n<p>Diariamente preciso\u00a0visualizar todos os \u00edndices de uma tabela para analisar a cria\u00e7\u00e3o, altera\u00e7\u00e3o ou exclus\u00e3o de um \u00edndice.<\/p>\n<p>A forma mais r\u00e1pida de ver os \u00edndices de uma tabela espec\u00edfica \u00e9 selecionar o nome da tabela e apertar Alt+f1. Entretanto, essa maneira n\u00e3o nos mostra as colunas da cl\u00e1usula include de um \u00edndice. Para obter essa informa\u00e7\u00e3o, utilizo a query abaixo:<\/p>\n<p>DECLARE @Nm_Tabela varchar(30)<br \/>\nSET @Nm_Tabela = &#8216;Nome_Tabela&#8217;<\/p>\n<p>SELECT SCHEMA_NAME (o.SCHEMA_ID) SchemaName<br \/>\n,o.name ObjectName,i.name IndexName<br \/>\n,i.type_desc<br \/>\n,LEFT(list, ISNULL(splitter-1,len(list))) Columns<br \/>\n, SUBSTRING(list, indCol.splitter +1, 1000) includedColumns&#8211;len(name) &#8211; splitter-1) columns<br \/>\n, COUNT(1) over (partition by o.object_id)<br \/>\nFROM sys.indexes i<br \/>\njoin sys.objects o on i.object_id = o.object_id<br \/>\ncross apply (select NULLIF(charindex(&#8216;|&#8217;,indexCols.list),0) splitter , list<br \/>\nfrom (select cast((<br \/>\nselect case when sc.is_included_column = 1 and sc.ColPos = 1 then&#8217;|&#8217; else &#8221; end +<br \/>\ncase when sc.ColPos\u00a0 &gt; 1 then &#8216;, &#8216; else &#8221; end + name<br \/>\nfrom (select sc.is_included_column, index_column_id, name<br \/>\n, ROW_NUMBER() over (partition by sc.is_included_column<br \/>\norder by sc.index_column_id)ColPos<br \/>\nfrom sys.index_columns\u00a0 sc<br \/>\njoin sys.columns\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 c on sc.object_id = c.object_id<br \/>\nand sc.column_id = c.column_id<br \/>\nwhere sc.index_id = i.index_id<br \/>\nand sc.object_id = i.object_id ) sc<br \/>\norder by sc.is_included_column<br \/>\n,ColPos<br \/>\nfor xml path (&#8221;), type) as varchar(max)) list)indexCols ) indCol<br \/>\nWHERE indCol.splitter is not null<br \/>\nand o.name = @Nm_Tabela<br \/>\nORDER BY SchemaName, ObjectName, IndexName<\/p>\n<p>Entretanto, essa query retorna apenas os \u00edndices que possuem a cl\u00e1usula INCLUDE.\u00a0Para ver todos os \u00edndices com ou sem a cl\u00e1usula INCLUDE\u00a0podemos utilizar uma procedure cujo c\u00f3digo foi disponibilizado por Kimberly L. Tripp (<a onclick=\"javascript:_gaq.push(['_trackEvent','outbound-article','www.sqlskills.com']);\" href=\"http:\/\/www.sqlskills.com\/BLOGS\/KIMBERLY\/\" target=\"_blank\">Blog<\/a>|<a onclick=\"javascript:_gaq.push(['_trackEvent','outbound-article','twitter.com']);\" href=\"http:\/\/twitter.com\/KimberlyLTripp\" target=\"_blank\">Twitter<\/a>): <a title=\"Sp_helpindex2\" href=\"http:\/\/www.sqlskills.com\/blogs\/kimberly\/post\/Updates-%28fixes%29-to-sp_helpindex2.aspx\" target=\"_blank\">sp_helpindex_2<\/a>.\u00a0Depois de criar a procedure, basta execut\u00e1-la conforme a figura abaixo:<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2011\/02\/sp_helpindex2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-408 aligncenter\" title=\"sp_helpindex2\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2011\/02\/sp_helpindex2-300x84.png\" alt=\"Procedure sp_helpindex2\" width=\"300\" height=\"84\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2011\/02\/sp_helpindex2-300x84.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2011\/02\/sp_helpindex2-410x115.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2011\/02\/sp_helpindex2-100x28.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2011\/02\/sp_helpindex2-275x77.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2011\/02\/sp_helpindex2-20x6.png 20w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2011\/02\/sp_helpindex2.png 650w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><b>Gostou dessa dica?<\/b><\/p>\n<p>Cadastre seu e-mail para receber novos Posts e curta minha <a href=\"https:\/\/www.facebook.com\/FabricioLimaSolucoesemBancodeDados\/\" target=\"_blank\">P\u00e1gina no Facebook<\/a> para receber Dicas de Leituras e Eventos sobre SQL Server.<\/p>\n<p>Aprenda a criar essa e outras rotinas para administrar melhor seu SQL Server no meu <a href=\"https:\/\/www.fabriciolima.net\/cursos-online\/treinamento-tarefas-do-dia-a-dia-de-um-dba-online\/\" target=\"_blank\">Treinamento de Tarefas do Dia a Dia de um DBA<\/a>.<\/p>\n<p>Abra\u00e7os,<\/p>\n<p>Fabr\u00edcio Lima<\/p>\n<p>MCITP \u2013 Database Administrator<\/p>\n<p>Consultor e Instrutor SQL Server<\/p>\n<p>Trabalha com SQL Server desde 2006<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fala Pessoal, Diariamente preciso\u00a0visualizar todos os \u00edndices de uma tabela para analisar a cria\u00e7\u00e3o, altera\u00e7\u00e3o ou exclus\u00e3o de um \u00edndice. A forma mais r\u00e1pida de ver os \u00edndices de uma tabela espec\u00edfica \u00e9 selecionar o nome da tabela e apertar Alt+f1. Entretanto, essa maneira n\u00e3o nos mostra as colunas da cl\u00e1usula include de um \u00edndice. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[13,280],"tags":[176,23,175,110,179,63,49,33,40],"class_list":["post-407","post","type-post","status-publish","format-standard","hentry","category-querys-do-dia-a-dia","category-virtual-pass-br","tag-clausula-include","tag-dba","tag-include","tag-indice","tag-manutencao-de-indice","tag-performance","tag-sql","tag-sql-server","tag-tuning"],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":1147,"url":"https:\/\/fabriciolima.net\/blog\/2012\/01\/31\/1-ano-de-fabriciolima-net\/","url_meta":{"origin":407,"position":0},"title":"1 Ano de FabricioLima.net","author":"Fabr\u00edcio Lima","date":"31 de janeiro de 2012","format":false,"excerpt":"Fala Pessoal, No dia 26\/01\/2012 o blog fabriciolima.net completou um ano de vida. Tive momentos de des\u00e2nimo, mas pouco tempo depois j\u00e1 estava empolgado para escrever novamente. Eu tenho uns 3 contadores de visitas ao Blog e cada um tem um valor diferente. Entretanto, como Google \u00e9 Google, vou utilizar\u2026","rel":"","context":"Em &quot;Carreira&quot;","block_context":{"text":"Carreira","link":"https:\/\/fabriciolima.net\/blog\/category\/carreira\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2012\/01\/InfoGerais.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":169,"url":"https:\/\/fabriciolima.net\/blog\/2010\/11\/30\/casos-do-dia-a-dia-exclusao-de-um-indice-grande-e-pouco-utilizado\/","url_meta":{"origin":407,"position":1},"title":"Casos do Dia a Dia &#8211; Exclus\u00e3o de um \u00edndice grande e pouco utilizado","author":"Fabr\u00edcio Lima","date":"30 de novembro de 2010","format":false,"excerpt":"Fala pessoal, Algum tempo atr\u00e1s, compartilhei uma experi\u00eancia que tive no Blog do Fabr\u00edcio Catae (Blog|Twitter), mas tamb\u00e9m resolvi deixar registrado por aqui. Muitos de voc\u00eas j\u00e1 utilizaram a dmv sys.dm_db_index_usage_stats para verificar a utiliza\u00e7\u00e3o e atualiza\u00e7\u00e3o dos \u00edndices de uma tabela. Tamb\u00e9m sabemos que essa dmv tem seus dados\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":484,"url":"https:\/\/fabriciolima.net\/blog\/2011\/02\/26\/qual-o-valor-ideal-para-o-fillfactor-de-um-indice\/","url_meta":{"origin":407,"position":2},"title":"Qual o valor ideal para o FILLFACTOR de um \u00cdndice?","author":"Fabr\u00edcio Lima","date":"26 de fevereiro de 2011","format":false,"excerpt":"Fala Pessoal, Voc\u00ea que \u00e9 um DBA, algum dia j\u00e1 deve ter feito essa pergunta para algu\u00e9m ou para o google. A resposta deve ter sido que n\u00e3o existe uma receita de bolo para definir o valor do fillfactor de um \u00edndice, seu valor depende do ambiente ser OLTP (Online\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2011\/02\/Tabela-Historico-Fragmentacao-300x90.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":8459,"url":"https:\/\/fabriciolima.net\/blog\/2018\/01\/08\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-3\/","url_meta":{"origin":407,"position":3},"title":"Melhorando a Performance de Consultas no Totvs Protheus &#8211; Parte 3","author":"Fabr\u00edcio Lima","date":"8 de janeiro de 2018","format":false,"excerpt":"Fala pessoal, Antes de lerem esse post, caso ainda n\u00e3o tenham lido os anteriores, sugiro que fa\u00e7am para seguirem a linha de racioc\u00ednio: https:\/\/www.fabriciolima.net\/blog\/2017\/12\/11\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-1\/ https:\/\/www.fabriciolima.net\/blog\/2017\/12\/18\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-2\/ Pegando mais uma quey no Traces de queries demoradas. Durante a semana, essa query apareceu v\u00e1rias vezes demorando mais de 3 segundos. Contudo, no fim\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2018\/01\/NetFlix3.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2018\/01\/NetFlix3.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2018\/01\/NetFlix3.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":928,"url":"https:\/\/fabriciolima.net\/blog\/2011\/08\/11\/como-monitorar-o-page-split-de-um-indice\/","url_meta":{"origin":407,"position":4},"title":"Como monitorar o Page Split de um \u00cdndice?","author":"Fabr\u00edcio Lima","date":"11 de agosto de 2011","format":false,"excerpt":"Fala Pessoal, H\u00e1 um tempo atr\u00e1s, dando uma vasculhada na internet a procura de como monitorar Page Split no meu Banco de Dados(SQL SERVER 2005), encontrei uma query EXCEPCIONAL em v\u00e1rios artigos em ingl\u00eas, mas tamb\u00e9m encontrei um artigo em portugu\u00eas do Laerte J\u00fanior(Twitter) que fala sobre o assunto: O\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":8521,"url":"https:\/\/fabriciolima.net\/blog\/2018\/01\/23\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-5\/","url_meta":{"origin":407,"position":5},"title":"Melhorando a Performance de Consultas no Totvs Protheus &#8211; Parte 5","author":"Fabr\u00edcio Lima","date":"23 de janeiro de 2018","format":false,"excerpt":"Fala pessoal, Antes de lerem esse post, caso ainda n\u00e3o tenham lido os anteriores, sugiro que fa\u00e7am para seguirem a linha de racioc\u00ednio: https:\/\/www.fabriciolima.net\/blog\/2017\/12\/11\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-1\/ https:\/\/www.fabriciolima.net\/blog\/2017\/12\/18\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-2\/ https:\/\/www.fabriciolima.net\/blog\/2018\/01\/08\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-3\/ https:\/\/www.fabriciolima.net\/blog\/2018\/01\/16\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-4\/ Hoje vamos analisar a query abaixo que estava demorando 28 segundos em um cliente e foi executada mais de 100 vezes em um\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2018\/01\/Netflix5-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2018\/01\/Netflix5-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2018\/01\/Netflix5-1.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/407","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/comments?post=407"}],"version-history":[{"count":0,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/407\/revisions"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=407"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=407"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=407"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}