Questions tagged «view»

一种虚拟表,以一种替代方式表示一个或多个表中的数据。

2
如何获得视图的执行计划?
我有一个带有多个视图的架构。我需要检查执行计划,以确保适当的索引到位并正在使用。 我该怎么做呢? 我宁愿不必复制输出并将其粘贴show create view <viewname>到中explain,尤其是因为某些视图是建立在其他视图之上的,这会很痛苦。

2
如何帮助SQL Server识别我的索引视图列不可为空?
我在SQL Server 2008中定义了以下索引视图(您可以从gist下载工作架构以进行测试): CREATE VIEW dbo.balances WITH SCHEMABINDING AS SELECT user_id , currency_id , SUM(transaction_amount) AS balance_amount , COUNT_BIG(*) AS transaction_count FROM dbo.transactions GROUP BY user_id , currency_id ; GO CREATE UNIQUE CLUSTERED INDEX UQ_balances_user_id_currency_id ON dbo.balances ( user_id , currency_id ); GO user_id,currency_id和transaction_amount都定义为中的NOT NULL列dbo.transactions。但是,当我看着Management Studio中的对象资源管理器,它标志着这两个视图定义balance_amount,并transaction_count为NULL在视图-able列。 我看了几个讨论,其中最相关的讨论表明一些功能改组可以帮助SQL Server识别视图列始终为NOT NULL。不过,在我的情况下,这样的改组是不可能的,因为在索引视图中不允许使用聚合函数的表达式(例如ISNULL()over SUM())。 …


1
Oracle中的物化视图
在oracle中如何实现物化视图?我已经在oracle中创建了一个物化视图。我现在看到的是一张很正常的工作表。物化视图是否在oracle中转换为表和作业?
9 oracle  view 


2
授予对视图的权限,拒绝对表的选择
我有一个MySQL用户,我希望它仅查看所需的视图,而不查看数据库中的任何其他表。我仅在某些视图上授予此用户权限,如下所示: GRANT SHOW VIEW ON `myDatabase`.`awesome_view` TO 'thisUser'@'%' 如果我show grants;发表声明,我只能按预期看到此权限。但是,我希望该用户仅查询视图,而不查询与这些视图相关的表,但是我找不到解决方法。似乎是如果我希望用户在视图上进行选择,则还必须为表授予选择权,否则我错了吗? 如果我select在其余表中拒绝该语句,并且在命令行中尝试进行选择,则会得到以下信息: SELECT * FROM myDatabase.fordibenForYouTable; ERROR 1142 (42000): SELECT command denied to user 'thisUser'@'localhost' for table 'fordibenForYouTable' 那确实是我想要的,但是如果选择视图数据,我也会被拒绝。 有没有一种方法可以让用户只使用视图而不是表?

3
内联TVF的效果与观看次数
我有一个数据库,我在其中使用嵌入式TVF(表值函数)而不是视图。例如,我可能在TVF [fnCarBrands]内将两个称为[汽车模型]和[汽车制造商]的表连接在一起。 然后,其他TVF会调用这些TVF进行进一步的处理和报告。因此,我可以使用函数[fnCarBrands]并连接到表[购买年份]以形成函数[fnCarBrandHistory]。以此类推,用于多层TVF。 我可以使用视图获得相同的功能,因为我的内联TVF实际上只是表和其他TVF的连接。 用这种方式编写的嵌入式TVF的性能与视图相比如何?

2
Postgres会执行视图中未选择的计算列的计算吗?
我试图了解从视图中选择数据的性能影响,其中视图中的列之一是原始表中其他数据的功能。 不管计算的列是否在所选列的列表中,都可以执行计算吗? 如果我有一个表并且视图这样声明 CREATE TABLE price_data ( ticker text, -- Ticker of the stock ddate date, -- Date for this price price float8, -- Closing price on this date factor float8 -- Factor to convert this price to USD ); CREATE VIEW prices AS SELECT ticker, ddate, price, factor, price …

3
如何在DateAdd()约束下的索引中改进视图中1行的估计
使用Microsoft SQL Server 2012(SP3)(KB3072779)-11.0.6020.0(X64)。 给定一个表和索引: create table [User].[Session] ( SessionId int identity(1, 1) not null primary key CreatedUtc datetime2(7) not null default sysutcdatetime()) ) create nonclustered index [IX_User_Session_CreatedUtc] on [User].[Session]([CreatedUtc]) include (SessionId) 以下每个查询的“实际行数”为3.1M,估计的行数显示为注释。 当这些查询在View中提供另一个查询时,由于1行估算,优化器选择循环连接。 如何在此基础上改进估计,以避免覆盖父查询联接提示或求助于SP? 使用硬编码日期非常有用: select distinct SessionId from [User].Session -- 2.9M (great) where CreatedUtc > '04/08/2015' -- but …

2
如何使联合视图更有效地执行?
我有一个大表(上千万个记录),出于性能原因,我们将其拆分为活动表和存档表,使用直接字段映射,并每晚运行一个存档过程。 在代码的几个地方,我们需要运行结合了活动表和归档表的查询,这些查询几乎总是被一个或多个字段过滤(我们显然已经在两个表中都添加了索引)。为了方便起见,有如下视图是有意义的: create view vMyTable_Combined as select * from MyTable_Active union all select * from MyTable_Archive 但是如果我运行类似的查询 select * from vMyTable_Combined where IndexedField = @val 在使用过滤之前,它将对Active和Store中的所有内容进行合并@val,这会降低性能。 是否有任何巧妙的方法可以使并集的两个子查询@val在创建并集之前查看每个过滤器? 或者,也许您会建议采用其他方法来实现我的目标,即一种简单有效的方法来获取由索引字段过滤的联合记录集? 编辑:这是执行计划(您将在这里看到实际的表名): 奇怪的是,活动表实际上使用了正确的索引(加上RID查找?),但是归档表正在执行表扫描!

1
为什么建议人们不要通过视图进行更新
在大学期间,它不停地通过视图来更新表,而当我进入工作场所时,又告诉我们不要通过视图来更新数据库。 在何处/是否存在显着的性能影响?还是更多这样的情况,高级开发人员/ DBA告诉初级人员不要执行此操作,因为他们可能会由于不正确的联接而无意间造成严重破坏。 编辑 我正在使用MSSQL 2000-2008(取决于客户端的详细信息)

1
Oracle物化视图刷新计划
因为我看到可以指定像sysdate + 1这样的表达式,所以这是我的问题: 是否可以为oracle中的实例化视图指定确切的刷新时间? 是否有可能全部从凌晨2点开始,而没有人使用我的应用程序中的数据库?
8 oracle  view 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.