在 SQL Server 中,什么时候应该使用索引视图而不是真实表?

2024-06-10

我知道在 SQL Server 中,您可以在视图上创建索引,然后视图保存基础表中的数据。然后就可以查询视图了。但是,为什么我需要使用视图而不是表呢?


您可能希望使用视图来简化查询。在我们的项目中,共识是使用界面视图,尤其是“报告界面”。

想象一下,您有一张客户表,经理希望每天早上收到一份包含客户姓名及其帐户余额(或其他内容)的报告。如果您根据表格对报告进行编码,则会在报告和表格之间创建强链接,从而使以后的更改变得困难。

另一方面,如果您的报告命中了视图,您可以自由地扭曲数据库;只要视图相同,报告就可以工作,经理就会很高兴,并且您可以自由地试验数据库。您想将客户端元数据与主客户端表分开吗?继续吧,并将视图中的两个表连接起来。您想对客户的购物车信息进行非规范化吗?没问题,视图可以适应...

老实说,这是我作为程序员的观点,但数据库专家肯定会发现其他用途:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 SQL Server 中,什么时候应该使用索引视图而不是真实表? 的相关文章

  • 如何循环遍历sql中的json数组以选择特定索引处的值

    我有一个存储过程 用于查询数据库并将结果存储在 Json 变量中 现在我想按索引循环遍历 Json 数组以获取特定值 有人可以告诉我如何实现这一目标吗 以下是我的查询 DECLARE json NVARCHAR Max DECLARE na
  • 列出 pandas.read_sql 中的 sql 表

    我想打开一个 SQL 2005 数据库 文件扩展名为 mdf 我一直在尝试这样做 import pandas as pd import pyodbc server server name db database name conn pyod
  • 如何根据条件选择列?

    我有一个名为 status 的变量 我在此 select 语句之前设置了它 Select ordr num as num ordr date as date ordr ship with as shipwith From order whe
  • IN SQL Server 是 CLR 线程安全的

    我在 SQL Server 和 Exchange Web 服务之间的 CLR 中有一个接口 用于在应用程序之间同步和发送电子邮件 在测试中它可以正常工作 没有任何问题 我们在生产环境中发现了零星问题 其中较长的 Web 服务任务似乎重叠 我
  • 存储过程中的分组和循环

    我需要对 MTH1 MTH2 等列进行求和 但对于我传递的参数 它将为同一帐户代码生成六行信息 这是正确的 它应该产生什么我的问题是如何只返回其中一个数据 但是到目前为止 这就是我的存储过程中六行的总和 ALTER PROCEDURE db
  • 使用 Python 将 XML 文件存储到 MS SQL DB 中

    我的 MSSQL DB 表包含以下结构 create table TEMP MyXMLFile XML 使用 Python 我尝试将本地存储的 XML 文件加载到 MS SQL DB 不需要 XML 解析 以下是Python代码 impor
  • SQL LIKE 运算符在应该显示任何结果时没有显示任何结果

    我有一个包含大量信息的车辆表 但其中一列是 MSSQL 表中的 所有者 但我使用时无法选择其中一个所有者LIKE但如果我可以使用 Silkeborg Distributionscenter 是所有者 是的 表和参数中都有一个双空格 所以参数
  • SQL Compact 3.5附加多个数据库/跨数据库查询?

    是否可以将多个数据库附加到 SQL CE 3 5 精简版 例如MasterData sdf Orders sdf 并对它们应用查询 例如 选择 Orders iOrderID Orders cItemID MasterData cItemD
  • 从sql server 2005中的列中获取查询的xml节点

    我有一个包含 2 列的表 第一个是带有主键的整数列 第二个是带有数据的 xml 列 数据列包含xml如下
  • 如何将 ROW_NUMBER() 分配给列?

    看完之后这个问题 https stackoverflow com questions 1293390 sql to output line number in results of a query 我还有一个类似的问题 有没有一种简单的方法
  • 有没有办法将加密的脚本插入 SQL Server 数据库?

    我的公司认为我们编写的数据库脚本是我们知识产权的一部分 在新版本中 我们为用户提供了由两部分组成的设置 桌面应用程序 一个可执行文件 它包含了初始化 更新数据库的复杂性 RedGate SQL Packager 我知道一旦脚本存在我就可以加
  • SSDT 单元测试:从配置文件读取 SQL Server 单元测试设置时发生错误

    我在 Visual Studio 2013 professional 中创建了一个数据库项目 然后通过右键单击存储过程之一并选择来添加单元测试创建单元测试 选择创建一个新的VB测试项目 然后右键单击新创建的测试项目并选择SQL Server
  • SQL Server 数据归档解决方案

    我正在寻找一种解决方案来存档数据库中存在的数据 我的数据库是 SQL Server 2008 大约有 250 个表 我搜索网络并找到以下链接 http www dbazine com sql sql articles charran13 h
  • 从 Visual Studio 调试 SQL Server 2005 中的存储过程?

    我在这里和其他地方看到很多令人沮丧的问题 但没有明确的答案 我试图让存储过程进行调试 但没有成功 客户端 VS2005或VS2008 两者都不起作用 当我从存储过程上下文菜单中选择 步入存储过程 时 我在调试窗口中看到 已被用户取消 这就是
  • 删除 Sql 服务器中最后一次出现特殊字符之前的子字符串

    我想删除最后一次出现句点之前的子字符串 查询应该转换r k Lee Brown to Lee Brown 所以 基本上我需要最后一个点之前的子字符串 并将其替换为 尝试这个 SELECT RIGHT str CHARINDEX REVERS
  • 如何编辑表以启用级联删除?

    我有一个代表用户的表 当用户被删除时我得到 DELETE 语句与 REFERENCE 约束冲突 显然 CASCADE DELETE在SQL Server中并不像我想象的那么容易 需要将选项添加到表中 问题是 我不知道如何添加CASCADE
  • 使用 sql 查询选择最近 30 天

    我正在查找过去 30 天内周一 周二 周三 周四 周五 周六 周日的数量 我可以在没有实际数据库表的情况下选择最近 30 天的日期和星期几吗 就像是 SELECT everything between convert date GETDAT
  • 如何在 SQL 中编写 where 子句来按一天中的时间过滤 DATETIME 列?

    我有带有 DATETIME 列时间戳的数据 我想将其过滤到 DATETIME 介于上午 9 30 到下午 5 30 之间的任意一天的记录集 最好的方法是什么 更新 更改是因为我需要精确到分钟 而不仅仅是小时 对于那个很抱歉 您始终可以将其编
  • SQL Server:比较两个表中的列

    我最近完成了从某些应用程序的旧版本到当前版本的迁移 在迁移数据库时遇到了一些问题 我需要一个可以帮助我比较两个表中的列的查询 我的意思不是行中的数据 我需要比较列本身来弄清楚我错过了表结构的哪些变化 看一下红门 SQL 比较 http ww
  • 无法在 SSIS 查找中选择 ODBC 源

    我正在创建一个用于更新 SQL Server 中的表的包 要更新的详细信息是从 MySQL 数据库获取的 为此 我使用 ODBC 连接管理器连接到 MySQL 但此 ODBC 连接管理器未在 OLE DB 连接管理器中列出 我可以在 Too

随机推荐