问题标签 [sql-view]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1996 浏览

sql - SQL Server 视图的性能测试产生了令人惊讶的结果。为什么?

最近,我们对一些可能对性能产生负面影响的 SQL Server 视图进行了一些更改。我们决定对这些视图进行一些性能测试,看看我们是如何影响它们的。结果令人惊讶。

下图显示了我们运行的性能测试的结果。以下是图表所代表的内容:

  • 蓝线是进行任何更改之前的视图。
  • 红线显示更改后的视图。
  • x 轴表示循环中的迭代。
    • 每次迭代,都会插入一千条新记录(视图将返回)。
    • 每次迭代,我们都会从我们正在测试的视图中进行几次选择,并对结果进行平均。
  • y 轴表示视图返回结果所需的时间
  • 经过性能测试的 select 语句有一个 where 子句,每次只返回 100 条记录。(在测试期间,每个名字上插入了 100 条记录)。

结果表明,我们确实确实受到了性能影响,但令我们感到困惑的是,一旦我们在数据库中达到大约 40,000 条记录,性能就会大幅提升。我们在几个不同的服务器上运行了这个测试,每次都得到类似的结果。

我想知道是否有人可以深入了解为什么会发生这种情况。当我们突破 40,000 个记录水平时,为什么我们会获得巨大的性能提升?有没有人见过这样的事情?我试图为此寻找某种原因,但空手而归。

我们尝试过调整视图、弄乱索引、重建和重组索引、分析执行计划以及其他各种事情,但到目前为止,我们还没有发现任何会导致这种情况的事情。

查看性能

任何帮助或见解将不胜感激。谢谢。

0 投票
1 回答
10699 浏览

sql-server - 我可以从视图中动态调用存储过程吗?

具体来说,我可以从视图中的当前数据库调用 proc 。我已经知道openrowset hack,所以这很有效,例如:

但我希望能够从当前数据库调用 proc,而无需像这样对名称进行硬编码:

不幸的是,这不起作用,因为 openrowset 需要文字字符串,而不是任何类型的变量。

不考虑安全性和性能方面的考虑,是否有解决方法?这将使遗留系统的维护更加容易忍受,因为此视图将调用的 proc 根据环境(开发、测试、产品)连接到不同的数据库。

0 投票
2 回答
6648 浏览

sql-server - 在视图中使用 UNION select

我需要检查一个特定用户是否已经被引用到我们的一个事务表(我们大约有 10 个事务表)。我建议使用包含所有已引用用户的视图,然后开发团队可以通过该表进行选择,以找出他们正在寻找的数据是否存在,

所以这是我对视图的查询:

现在它有效,但我的问题是,这是个好主意吗?该要求要求我只提供一个脚本(或视图)而不是存储过程,我认为使用 SP 会更好,因为我可以为每个表执行一个快速的 IF EXIST() 语句并检查是否参数 user 存在于任何表中,但他们真的希望它只是一个他们可以检查的脚本(并且不使用变量)。

你们能不能给我一个更好的方法来满足这个要求,这对性能的影响会更小,因为这可能不是这个要求的优化解决方案。

TIA,隆美尔

0 投票
3 回答
12010 浏览

sql - SQL View 和 WITH 子句的区别

这里的任何人都可以告诉我 VIEW 和 WITH 的区别,因为我搜索了很多地方,但我找不到任何关于它的信息。
我的想法是 VIEW 和 WITH 是相同的,除了 VIEWs 被保存为模式对象,但我可能是错的

0 投票
1 回答
185 浏览

sql-server - 未映射行的 SQL 视图

基本上我想弄清楚的是,说我有

表格1tbl1

ID | Name

和表2tbl2

ID | Name

然后我有一个映射表mt

ID | tbl1ID | tbl2ID

数据在这里并不重要,这些表格只是示例。

如何制作一个view将抓取所有tbl1未映射到的项目mt

顺便说一句,我正在使用 Microsoft SQL-server 2008。

0 投票
3 回答
15786 浏览

mysql - Wordpress 用户和用户元 - 将一个表中的多行连接到另一个表中的一行

我想从 wp_users 和 wp_usermeta 表创建一个视图,以便我可以从外部应用程序查询视图中的行。基本身份验证详细信息存储在 wp_users 中(例如,用户名、密码、电子邮件、id),其他字段存储在 wp_usermeta 表中的键/值对中。

wp_users 表的结构如下:

wp_usermeta 表的结构如下:

我想以 MYSQL VIEW 的形式得到这样的数据:

我知道我至少需要在 wp_users 和 wp_usermeta 之间进行内部连接,但是我还需要在 wp_usermeta 中执行子查询以将这些行连接在一起。

我用于获取用户行的查询当然非常简单:

我将元数据作为一行获取的查询是:

那么如何将这两个查询连接在一起 - u1 的数据和 u1.id = m1.userid 所在的行?

0 投票
2 回答
40156 浏览

sql - SQL Server在带有条件的VIEW中添加计算列

这是我的情况:

在我的表中有两个字段:

TaxIdvalue 没有存储在任何地方,但只有两个值(实际上是 3 个)。

现在我需要在我的视图中计算列来计算含税的新价格。

任何的想法?

我选择了类似的东西:

更新:

我已成功执行查询。

现在我只需要将 CalculatedPrice 设为十进制 (15,4)。我该如何设置?

0 投票
2 回答
12555 浏览

sql - 视图中的 SQL Server SUM 函数

我有一个字段视图:

价格是计算值。

我想要的是totalPrice在 select 语句中添加另一个计算列 ( ),它将具有相同 id 的记录的所有价格相加,给出结果(假设视图中有四行):

谢谢你。

0 投票
1 回答
14385 浏览

sql - 如何在 SQL Server 中合并多行数据

这是我的情况:

TABLE PEOPLE(代码、姓名和其他与具有相同代码的记录相同的字段)

我想要的结果:

VIEW PEOPLE(代码、姓名和其他与具有相同代码的记录相同的字段)

有人可以帮我创建一个可以给我这个结果的视图吗?重点是合并具有相同“代码”的行并在“名称”列中合并名称。对于具有相同“代码”的行,所有其他字段都是 100% 相同的。

谢谢你。

0 投票
1 回答
756 浏览

haskell - Yesod/persistent 中的 SQL 视图

http://www.yesodweb.com/book/persistent中没有提到 SQL 视图。

我(甚至在命令式语言中)一直非常喜欢不可变的数据库模式设计。即只有 INSERTs 和 SELECTs - 不使用 UPDATEs 和 DELETEs。

这具有保留所有历史记录的优点,但代价是使当前“状态”成为数据库中历史记录的相对昂贵的纯函数。

例如,没有'user'表,只有'user_created'、'user_password_updated'和'user_deleted'表,它们统一在一个'user' SQL VIEW中,显示用户的当前状态。

我应该如何在 Persistent 中使用 VIEW?我应该完全使用 Persistent - 它(对于 Haskell 具有讽刺意味)是否过于专注于我的用例的可变数据库?