{"id":129,"date":"2023-10-04T17:33:13","date_gmt":"2023-10-04T20:33:13","guid":{"rendered":"https:\/\/dotnetdicas.com.br\/?p=129"},"modified":"2023-10-04T18:21:03","modified_gmt":"2023-10-04T21:21:03","slug":"sparse-column-entity-framework","status":"publish","type":"post","link":"https:\/\/dotnetdicas.com.br\/?p=129","title":{"rendered":"Sparse Column &#8211; Entity Framework"},"content":{"rendered":"<p><span style=\"font-family: verdana, geneva, sans-serif;\">Ol\u00e1 Devs!!! Vamos conversar sobre essa coisa chamada <strong><em>Sparse Column<\/em><\/strong> no contexto do SQL Server e como isso se encaixa com o Entity Framework. Entendo que o termo soe um pouco t\u00e9cnico, mas prometo que vai ficar mais claro.<\/span><\/p>\n<h3><span style=\"font-family: verdana, geneva, sans-serif;\">1. O problema do espa\u00e7o com nulls<\/span><\/h3>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">Imagine que voc\u00ea tem uma tabela enorme e muitas das colunas nessa tabela t\u00eam toneladas de valores vazios, ou seja, NULLs. Agora, mesmo que voc\u00ea pense &#8220;<em>Ah, \u00e9 apenas um valor vazio<\/em>&#8220;, no banco de dados, cada um desses NULLs ocupa espa\u00e7o. Pode n\u00e3o parecer muito em pequena escala, mas em uma tabela grande, isso acumula e se torna um desperd\u00edcio real de espa\u00e7o.<\/span><\/p>\n<h3><span style=\"font-family: verdana, geneva, sans-serif;\">2. A magia das colunas sparse<\/span><\/h3>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">O que o SQL Server faz \u00e9 permitir que voc\u00ea marque uma coluna como &#8220;<em>Sparse<\/em>&#8220;. Quando voc\u00ea tem um valor NULL em uma coluna marcada assim, ele n\u00e3o ocupa espa\u00e7o algum. No entanto, quando h\u00e1 um valor real, ele acaba consumindo um pouquinho mais de espa\u00e7o do que uma coluna normal.<\/span><\/p>\n<h3><span style=\"font-family: verdana, geneva, sans-serif;\">3. Restri\u00e7\u00f5es e detalhes<\/span><\/h3>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">H\u00e1 algumas coisas que voc\u00ea precisa saber sobre colunas Sparse. Voc\u00ea n\u00e3o pode ter mais de 30.000 delas em uma \u00fanica tabela, e h\u00e1 certos tipos de dados que n\u00e3o s\u00e3o compat\u00edveis, como como &#8220;<em>timestamp<\/em>&#8220;, &#8220;<em>geography<\/em>&#8220;, entre outros. Al\u00e9m disso, se quiser adicionar um \u00edndice, h\u00e1 algumas etapas adicionais envolvidas, como usar um &#8220;<em>column set<\/em>&#8220;, que \u00e9 uma coluna XML computada que combina todas as colunas sparse da tabela.<\/span><\/p>\n<h3><span style=\"font-family: verdana, geneva, sans-serif;\">4. Integrando com o entity framework<\/span><\/h3>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">Ah, e em rela\u00e7\u00e3o ao Entity Framework? Com o <\/span><span style=\"font-family: verdana, geneva, sans-serif;\">Entity Framework Core, voc\u00ea tem uma maneira pr\u00e1tica e direta de lidar com <em>Sparse Column<\/em>. Ao definir um modelo no EF Core, basta aplicar o m\u00e9todo <em><strong>.IsSparse()<\/strong><\/em> na propriedade desejada para indicar que essa coluna deve ser tratada como Sparse no SQL Server. Esse recurso \u00e9 especialmente \u00fatil porque elimina a necessidade de configura\u00e7\u00f5es manuais no banco de dados ou de usar comandos SQL brutos durante as migra\u00e7\u00f5es.<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">Ao aplicar <em><strong>.IsSparce()<\/strong><\/em> em uma propriedade, o EF Core garante que, ao criar ou migrar sua base de dados, ele configure a coluna correspondente como Sparse no SQL Server. \u00c9 uma maneira integrada e fluida de otimizar seu banco de dados para colunas que t\u00eam uma alta frequ\u00eancia de valores NULL, economizando espa\u00e7o e mantendo a efici\u00eancia.<\/span><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-132\" src=\"http:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/10\/column-sparse-300x199.png\" alt=\"sparse column\" width=\"737\" height=\"489\" srcset=\"https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/10\/column-sparse-300x199.png 300w, https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/10\/column-sparse-1024x678.png 1024w, https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/10\/column-sparse-1536x1017.png 1536w, https:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/10\/column-sparse.png 1612w\" sizes=\"(max-width: 737px) 100vw, 737px\" \/><\/p>\n<h3><span style=\"font-family: verdana, geneva, sans-serif;\">5. Conclus\u00e3o: vale a pena?<\/span><\/h3>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">A ideia por tr\u00e1s das colunas Sparse \u00e9 economizar espa\u00e7o quando se tem muitos valores NULL. Tem seus pr\u00f3s e contras, como qualquer tecnologia. A economia de espa\u00e7o \u00e9 real, mas \u00e9 preciso equilibrar com outros fatores como desempenho e complexidade.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">Se voc\u00ea sentir que se encaixa no seu cen\u00e1rio, v\u00e1 em frente e experimente!!!<\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1 Devs!!! Vamos conversar sobre essa coisa chamada Sparse Column no contexto do SQL Server e como isso se encaixa com o Entity Framework. Entendo que o termo soe um pouco t\u00e9cnico, mas prometo que vai ficar mais claro. 1. O problema do espa\u00e7o com nulls Imagine que voc\u00ea tem uma tabela enorme e muitas [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Sparse Column - Entity Framework - DotNetDicas - C\u00f3digo forte, Carreira mais forte<\/title>\n<meta name=\"description\" content=\"Hoje vamos conversar sobre essa coisa chamada Sparse Column no contexto do SQL Server e como isso se encaixa com o Entity Framework...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dotnetdicas.com.br\/?p=129\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sparse Column - Entity Framework - DotNetDicas - C\u00f3digo forte, Carreira mais forte\" \/>\n<meta property=\"og:description\" content=\"Hoje vamos conversar sobre essa coisa chamada Sparse Column no contexto do SQL Server e como isso se encaixa com o Entity Framework...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dotnetdicas.com.br\/?p=129\" \/>\n<meta property=\"og:site_name\" content=\"DotNetDicas - C\u00f3digo forte, Carreira mais forte\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-04T20:33:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-04T21:21:03+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/10\/column-sparse-300x199.png\" \/>\n<meta name=\"author\" content=\"L\u00facio Torres\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"L\u00facio Torres\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/dotnetdicas.com.br\/?p=129\",\"url\":\"https:\/\/dotnetdicas.com.br\/?p=129\",\"name\":\"Sparse Column - Entity Framework - DotNetDicas - C\u00f3digo forte, Carreira mais forte\",\"isPartOf\":{\"@id\":\"https:\/\/dotnetdicas.com.br\/#website\"},\"datePublished\":\"2023-10-04T20:33:13+00:00\",\"dateModified\":\"2023-10-04T21:21:03+00:00\",\"author\":{\"@id\":\"https:\/\/dotnetdicas.com.br\/#\/schema\/person\/368975f3d3f2d0c3c1d7b176c555b3fa\"},\"description\":\"Hoje vamos conversar sobre essa coisa chamada Sparse Column no contexto do SQL Server e como isso se encaixa com o Entity Framework...\",\"breadcrumb\":{\"@id\":\"https:\/\/dotnetdicas.com.br\/?p=129#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/dotnetdicas.com.br\/?p=129\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/dotnetdicas.com.br\/?p=129#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/dotnetdicas.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sparse Column &#8211; Entity Framework\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/dotnetdicas.com.br\/#website\",\"url\":\"https:\/\/dotnetdicas.com.br\/\",\"name\":\"DotNetDicas - C\u00f3digo forte, Carreira mais forte\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/dotnetdicas.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/dotnetdicas.com.br\/#\/schema\/person\/368975f3d3f2d0c3c1d7b176c555b3fa\",\"name\":\"L\u00facio Torres\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/dotnetdicas.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c4d33f0feb1d62f7769da1983149ca69?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c4d33f0feb1d62f7769da1983149ca69?s=96&d=mm&r=g\",\"caption\":\"L\u00facio Torres\"},\"sameAs\":[\"https:\/\/dotnetdicas.com.br\"],\"url\":\"https:\/\/dotnetdicas.com.br\/?author=2\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Sparse Column - Entity Framework - DotNetDicas - C\u00f3digo forte, Carreira mais forte","description":"Hoje vamos conversar sobre essa coisa chamada Sparse Column no contexto do SQL Server e como isso se encaixa com o Entity Framework...","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:\/\/dotnetdicas.com.br\/?p=129","og_locale":"pt_BR","og_type":"article","og_title":"Sparse Column - Entity Framework - DotNetDicas - C\u00f3digo forte, Carreira mais forte","og_description":"Hoje vamos conversar sobre essa coisa chamada Sparse Column no contexto do SQL Server e como isso se encaixa com o Entity Framework...","og_url":"https:\/\/dotnetdicas.com.br\/?p=129","og_site_name":"DotNetDicas - C\u00f3digo forte, Carreira mais forte","article_published_time":"2023-10-04T20:33:13+00:00","article_modified_time":"2023-10-04T21:21:03+00:00","og_image":[{"url":"http:\/\/dotnetdicas.com.br\/wp-content\/uploads\/2023\/10\/column-sparse-300x199.png"}],"author":"L\u00facio Torres","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"L\u00facio Torres","Est. tempo de leitura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/dotnetdicas.com.br\/?p=129","url":"https:\/\/dotnetdicas.com.br\/?p=129","name":"Sparse Column - Entity Framework - DotNetDicas - C\u00f3digo forte, Carreira mais forte","isPartOf":{"@id":"https:\/\/dotnetdicas.com.br\/#website"},"datePublished":"2023-10-04T20:33:13+00:00","dateModified":"2023-10-04T21:21:03+00:00","author":{"@id":"https:\/\/dotnetdicas.com.br\/#\/schema\/person\/368975f3d3f2d0c3c1d7b176c555b3fa"},"description":"Hoje vamos conversar sobre essa coisa chamada Sparse Column no contexto do SQL Server e como isso se encaixa com o Entity Framework...","breadcrumb":{"@id":"https:\/\/dotnetdicas.com.br\/?p=129#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dotnetdicas.com.br\/?p=129"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/dotnetdicas.com.br\/?p=129#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/dotnetdicas.com.br\/"},{"@type":"ListItem","position":2,"name":"Sparse Column &#8211; Entity Framework"}]},{"@type":"WebSite","@id":"https:\/\/dotnetdicas.com.br\/#website","url":"https:\/\/dotnetdicas.com.br\/","name":"DotNetDicas - C\u00f3digo forte, Carreira mais forte","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dotnetdicas.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/dotnetdicas.com.br\/#\/schema\/person\/368975f3d3f2d0c3c1d7b176c555b3fa","name":"L\u00facio Torres","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/dotnetdicas.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c4d33f0feb1d62f7769da1983149ca69?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c4d33f0feb1d62f7769da1983149ca69?s=96&d=mm&r=g","caption":"L\u00facio Torres"},"sameAs":["https:\/\/dotnetdicas.com.br"],"url":"https:\/\/dotnetdicas.com.br\/?author=2"}]}},"_links":{"self":[{"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=\/wp\/v2\/posts\/129"}],"collection":[{"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=129"}],"version-history":[{"count":3,"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=\/wp\/v2\/posts\/129\/revisions"}],"predecessor-version":[{"id":133,"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=\/wp\/v2\/posts\/129\/revisions\/133"}],"wp:attachment":[{"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dotnetdicas.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}