{"id":1673,"date":"2020-05-24T16:25:48","date_gmt":"2020-05-24T16:25:48","guid":{"rendered":"http:\/\/manualsqlserver.com\/?p=1673"},"modified":"2020-05-24T16:25:51","modified_gmt":"2020-05-24T16:25:51","slug":"indices-en-vistas-sql-server","status":"publish","type":"post","link":"https:\/\/manualsqlserver.com\/?p=1673","title":{"rendered":"\u00cdndices en vistas SQL Server"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"200\" height=\"235\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Indices_en_Vistas__D.png\" alt=\"\" class=\"wp-image-1674\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u00cdndices en Vistas SQL Server<\/h2>\n\n\n\n<p>Las vistas permiten guardar una consulta en un objeto en la base de datos para poder acceder a ella a manera de consultas mas r\u00e1pidamente. Las vistas al crearse guardan el resultado en una estructura no indizada lo que posiblemente al consultar estas el resultado no sea \u00f3ptimo.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Despu\u00e9s de crear vistar (<a rel=\"noreferrer noopener\" href=\"https:\/\/manualsqlserver.com\/?p=310\" target=\"_blank\">Ver Vistas<\/a>) es recomendable crear en esta un \u00edndice agrupado como su clave primaria y los \u00edndices no agrupados necesarios para realizar las consultas en la vista de manera mas \u00f3ptima.<\/p>\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p>Para crear \u00edndices en la vista se utiliza la instrucci\u00f3n Create Index de igual forma que se utilizan en la creaci\u00f3n de \u00edndices en tablas. (<a rel=\"noreferrer noopener\" href=\"https:\/\/manualsqlserver.com\/?p=158\" target=\"_blank\">Ver \u00cdndices<\/a>)<br>La vista tiene que estar ligada a un esquema, por lo que al crear la vista debemos incluir la cl\u00e1usula <strong>With SchemaBinding<\/strong>. Note que la crear la vista, si la tabla est\u00e1 en el esquema dbo, debe incluirse el nombre del esquema.  Al crear un \u00edndice agrupado debe ser \u00fanico.<\/p>\n\n\n\n<p><strong>Usando la base de datos Northwind<\/strong><br>use Northwind<br>go<\/p>\n\n\n\n<p>En cada ejercicio se va a crear la vista y luego crear \u00edndices para esta.<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Ejercicio 1<\/strong><\/p>\n\n\n\n<p><strong>Crear una vista para los productos<\/strong><br>Create view vistaProductosListaPrecio<br>With SchemaBinding<br>As<br>select<br>P.ProductID As &#8216;C\u00f3digo&#8217;,<br>P.ProductName As &#8216;Descripci\u00f3n&#8217;,<br>P.UnitPrice As &#8216;Precio&#8217;,<br>P.UnitsInStock As &#8216;Stock&#8217;<br>from dbo.Products As P<br>go<\/p>\n\n\n\n<p><strong>Ver la estructura de la vista, puede notarse que no existen \u00edndices para esta, lo que hara que las consultas en la vista sean lentas.<\/strong><br>sp_help vistaProductosListaPrecio<br>go<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Indices_en_Vistas_01-1024x304.png\" alt=\"\" class=\"wp-image-1675\" width=\"686\" height=\"203\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Indices_en_Vistas_01-1024x304.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Indices_en_Vistas_01-300x89.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Indices_en_Vistas_01-768x228.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Indices_en_Vistas_01.png 1293w\" sizes=\"auto, (max-width: 686px) 100vw, 686px\" \/><\/figure>\n\n\n\n<p><strong>Creando el \u00edndice agrupado para la vista<br><\/strong>Create unique clustered index vistaProductosListaPrecioIDX on<br>vistaProductosListaPrecio (C\u00f3digo)<br>go<\/p>\n\n\n\n<p><strong>Ver nuevamente la estructura de la vista<br><\/strong>sp_help vistaProductosListaPrecio<br>go<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Indices_en_Vistas_02-1024x352.png\" alt=\"\" class=\"wp-image-1676\" width=\"688\" height=\"236\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Indices_en_Vistas_02-1024x352.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Indices_en_Vistas_02-300x103.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Indices_en_Vistas_02-768x264.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_Indices_en_Vistas_02.png 1302w\" sizes=\"auto, (max-width: 688px) 100vw, 688px\" \/><\/figure>\n\n\n\n<p><strong>Crear \u00edndices para los otros campos<\/strong><br>Create index vistaProductosDescripcionIDX on<br>vistaProductosListaPrecio (Descripci\u00f3n)<br>go<br>Create index vistaProductosDescripcionTodosIDX on<br>vistaProductosListaPrecio (Descripci\u00f3n)<br>include (Precio, Stock)<br>go<br>Note que se ha incluido en este \u00faltimo ejercicio el campo Descripci\u00f3n. Para mayor informaci\u00f3n <a href=\"https:\/\/manualsqlserver.com\/?p=1666\" target=\"_blank\" rel=\"noreferrer noopener\">Ver Include en \u00cdndices<\/a><\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Ejercicio 2<\/strong><\/p>\n\n\n\n<p><strong>Crear una vista con los clientes<\/strong><br>Create view vistaClientesLista<br>With SchemaBinding<br>As<br>select<br>C.CustomerID As &#8216;C\u00f3digo&#8217;,<br>C.CompanyName As &#8216;Cliente&#8217;,<br>C.ContactName As &#8216;Contacto&#8217;,<br>C.Address As &#8216;Direcci\u00f3n&#8217;,<br>C.Phone As &#8216;Tel\u00e9fono&#8217;<br>from dbo.Customers As C<br>go<\/p>\n\n\n\n<p><strong>Creando el \u00edndice para la vista<\/strong><br>Create unique clustered index vistaClientesListaCodigoIDX on<br>vistaClientesLista (C\u00f3digo)<br>go<br><strong>\u00cdndices para los otros campos de la vista<\/strong><br>Create index vistaClientesListaNombreIDX on<br>vistaClientesLista (Cliente)<br>go<br><strong>Se puede incluir la cl\u00e1usula Include para optimizar las consultas en la vista<\/strong><br>Create index vistaClientesListaNombreDireccionContactoIDX on<br>vistaClientesLista (Cliente)<br>Include (Direcci\u00f3n, Contacto)<br>go<\/p>\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\u00cdndices en Vistas SQL Server Las vistas permiten guardar una consulta en un objeto en la base de datos para poder acceder a ella a manera de consultas mas r\u00e1pidamente. Las vistas al crearse guardan el resultado en una estructura no indizada lo que posiblemente al consultar estas el resultado no sea \u00f3ptimo.<\/p><p><a class=\"more-link btn\" href=\"https:\/\/manualsqlserver.com\/?p=1673\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":1674,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[105,22,179],"class_list":["post-1673","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-indices","tag-create-index","tag-create-view","tag-with-schemabinding","nodate","item-wrap"],"_links":{"self":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/1673","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1673"}],"version-history":[{"count":1,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/1673\/revisions"}],"predecessor-version":[{"id":1677,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/1673\/revisions\/1677"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/media\/1674"}],"wp:attachment":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1673"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1673"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1673"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}