Questions tagged «view»

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

3
何时在MySQL中使用视图?
当通过多个联接创建表以用于分析时,何时使用视图而不是创建新表? 我更喜欢使用视图的原因之一是数据库模式是由我们的管理员从Ruby内部开发的,而我对Ruby并不熟悉。我可以要求创建表,但是需要额外的步骤,在开发/测试新联接时,我希望有更大的灵活性。 我开始在SO的一个相关问题(何时使用R,何时使用SQL)的答案之后使用视图。投票最多的答案开始为“在SQL中进行数据操作,直到数据在单个表中,然后在R中进行其余操作。” 我已经开始使用视图,但是遇到了一些视图问题: 查询要慢得多 视图不会从生产中转储到我用于分析的备份数据库中。 视图是否适合此用途?如果是这样,我应该期望性能下降吗?有没有一种方法可以加快视图查询?

7
为什么不使用表格代替物化视图?
我是Oracle数据库的新手。如果我正确理解,则物化视图是将结果集另存为数据库中的物理表的视图,并且会基于某些参数刷新该视图/表。如果将视图另存为物理表,为什么不首先将数据存储到表中?那么,使用物化视图而不是表的好处是什么?

4
视图是否对PostgreSQL的性能有害?
以下是关于数据库设计的书的摘录(数据库设计ISBN:0-7645-7490-6): 使用视图的危险是针对视图过滤查询,期望读取很大表的很小部分。应该在视图内完成所有筛选,因为在视图中的查询完成执行之后,将对视图本身进行任何筛选。视图通常对于加快开发过程很有用,但是从长远来看,它可能会完全破坏数据库性能。 以下是PostgreSQL 9.5文档的摘录: 充分利用视图是良好的SQL数据库设计的关键方面。通过视图,您可以在一致的接口后面封装表结构的详细信息,该表结构的详细信息可能会随着应用程序的发展而变化。 这两个来源似乎相互矛盾(“不使用视图设计”与“不使用视图设计”)。 但是,在PG视图中是使用规则系统实现的。因此,可能(这是我的问题),针对视图的任何筛选都将重写为视图中的筛选器,从而导致针对基础表的单个查询执行。 我的解释正确吗,PG将WHERE子句组合进了视图?还是单独运行它们?有没有简短,自成体系,正确(可编译)的示例?

5
嵌套视图是一种好的数据库设计吗?
我很久以前就读过书。本书指出,我们不应允许在SQL Server中具有嵌套视图。我不确定为什么不能这样做,否则我可能会记得错误的陈述。 学生们 SELECT studentID, first_name, last_name, SchoolID, ... FROM students CREATE VIEW vw_eligible_student AS SELECT * FROM students WHERE enroll_this_year = 1 教师 SELECT TeacherID, first_name, last_name, SchoolID, ... FROM teachers CREATE VIEW vw_eligible_teacher AS SELECT * FROM teachers WHERE HasCert = 1 AND enroll_this_year = 1 学校 CREATE …


3
当我向其中添加WHERE子句时,是否优化了视图?
如果在视图内部或外部过滤视图,这会有所不同吗? 例如,这两个查询之间有什么区别吗? SELECT Id FROM MyTable WHERE SomeColumn = 1 要么 SELECT Id FROM MyView WHERE SomeColumn = 1 并且MyView定义为 SELECT Id, SomeColumn FROM MyTable 如果源表位于链接服务器上,答案是否有所不同? 我之所以问是因为我必须从链接的服务器查询一个大表(4400万行)两次,并获得结果的汇总。我想知道是否应该创建两个视图来访问数据,每个查询一个视图,还是我可以放弃一个视图和一个WHERE子句。

4
在许多视图上修改DEFINER
更新后备份我的数据库时遇到问题。我一直在寻找系统原因,以找出原因。我运行的一个查询返回了此结果。 Got error: 1449: The user specified as a definer ('cittool'@'%') does not exist when using LOCK TABLES 经过调查后,这些视图的定义者似乎是已从系统中清除的旧开发者帐户。带有此问题的数据库和视图很少使用,并且大多数用于存档目的。 带有定义器的视图大约不存在40个。是否有一种简单的方法可以一次将定义器更改为其他帐户?有没有一种方法可以使mysqldump简单地将所有视图转储到文件中,以便我可以编辑该文件并重新创建视图?
25 mysql  view 

1
执行计划显示了昂贵的CONVERT_IMPLICIT操作。我可以通过索引解决此问题,还是需要更改表?
我有一个非常重要,非常缓慢的观点,它的where子句中包含一些非常丑陋的条件。我也知道联接是粗联接和慢联接,varchar(13)而不是整数标识字段,但想改进下面使用此视图的简单查询: CREATE VIEW [dbo].[vwReallySlowView] AS AS SELECT I.booking_no_v32 AS bkno, I.trans_type_v41 AS trantype, B.Assigned_to_v61 AS Assignbk, B.order_date AS dateo, B.HourBooked AS HBooked, B.MinBooked AS MBooked, B.SecBooked AS SBooked, I.prep_on AS Pon, I.From_locn AS Flocn, I.Trans_to_locn AS TTlocn, (CASE I.prep_on WHEN 'Y' THEN I.PDate ELSE I.FirstDate END) AS PrDate, I.PTimeH AS …
24 sql-server  view 

3
在Postgres中替换实例化视图
我有一个物化视图Postgres 9.3,我想用新的列进行更新。但是,其他实例化视图也依赖于此视图,并且错误消息表明,当其他对象依赖该视图时,则无法删除该视图。 错误:无法删除实例化视图latest_charges,因为其他对象依赖它 从文档中还可以看出,REPLACE关键字对于实例化视图无效。除了删除所有依赖对象并重建每个依赖对象之外,还有没有捷径可走?

4
确定架构更改是如何发生的?
昨天发生了一些坏事。 某人之前修改过的某个视图后来被某人修改,最终破坏了报告。不幸。某人(在不知不觉中)在PRODUCTION数据库中进行了此修改。 我的问题:有没有一种方法(脚本/软件/免费软件等),我们可以借此了解谁(用户名)进行了此修改,因此我可以撤消该用户对生产数据库的访问。 如果我的问题不清楚,请发表评论。
21 sql-server  view 


1
SQL Server-处理嵌套的非确定性视图堆栈中的字符串本地化
在对数据库进行概要分析时,我遇到了一个视图,该视图引用了一些不确定性函数,对于该应用程序池中的每个连接,每分钟可访问1000-2500次。从视图中看,一个简单的代码将产生以下执行计划:SELECT 对于少于一千行的视图来说,这似乎是一个复杂的计划,每隔几个月可能会看到一两行发生变化。但是随着以下其他情况的恶化,情况变得更糟: 嵌套视图是不确定的,因此我们无法为其编制索引 每个视图都引用多个UDFs来构建字符串 每个UDF都包含嵌套UDF的,以获取本地化语言的ISO代码 堆栈中的视图使用从s 返回的其他字符串构建器UDF作为JOIN谓词 每个视图堆被视为一个表,这意味着有INSERT/ UPDATE/ DELETE在每个触发器来写入底层表 在视图上,这些触发器使用CURSORS该EXEC存储过程作为参考更多的这些串建设UDF秒。 这对我来说似乎很烂,但是我只有几年使用TSQL的经验。它也会变得更好! 看来开发人员认为这是个好主意,做了所有这些工作,以便所存储的几百个字符串可以基于从UDF特定于模式的a返回的字符串进行翻译。 这是堆栈中的视图之一,但是它们都同样糟糕: CREATE VIEW [UserWKStringI18N] AS SELECT b.WKType, b.WKIndex , CASE WHEN ISNULL(il.I18NID, N'') = N'' THEN id.I18NString ELSE il.I18nString END AS WKString ,CASE WHEN ISNULL(il.I18NID, N'') = N'' THEN id.IETFLangCode ELSE il.IETFLangCode END AS IETFLangCode ,dbo.User3StringI18N_KeyValue(b.WKType, b.WKIndex, …

1
PostgreSQL以什么顺序检查对象权限?
给定数据库角色,定义为存储过程user1的函数something()和创建的视图如下: CREATE VIEW view1 AS select * from something() 并且,鉴于此权限: REVOKE ALL ON FUNCTION something FROM user1 REVOKE SELECT ON view1 FROM user1 当我跑步时SELECT * FROM view1,出现错误permission denied for function something()。 我的问题是,如果我撤消了对视图的选择权限,为什么要调用该函数?我期待收到类似的东西: permission denied for relation view1 谢谢!

2
为什么在视图中将NOT NULL计算列视为可为空?
我有一张桌子: CREATE TABLE [dbo].[Realty]( [Id] [int] IDENTITY(1,1) NOT NULL, [RankingBonus] [int] NOT NULL, [Ranking] AS ([Id]+[RankingBonus]) PERSISTED NOT NULL .... ) 和一个视图: CREATE View [dbo].[FilteredRealty] AS SELECT realty.Id as realtyId, ... COALESCE(realty.Wgs84X, ruian_cobce.Wgs84X, ruian_obec.Wgs84X) as Wgs84X, COALESCE(realty.Wgs84Y, ruian_cobce.Wgs84Y, ruian_obec.Wgs84Y) as Wgs84Y, realty.Ranking, ... FROM realty JOIN Category ON realty.CategoryId = …

2
在CREATE VIEW中使用WITH进行SQL处理
我想使用WITH子句创建VIEW,但实际上找不到正确语法的任何引用。 我想要这样 WITH TempTbl AS (SELECT ...) CREATE VIEW SomeView SELECT * FROM TempTbl 使用几个WITH子句的正确语法是什么? 在MSDN上没有任何用处:(
14 t-sql  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.