小编Pau*_*ite的帖子

为来自不同表的不同属性创建视图

我有三张表:

product(pid,name,category,maker-cid)
purchase(buyer-ssn,seller-ssn,quantity,pid)
person(ssn,name,phone number,city)
Run Code Online (Sandbox Code Playgroud)

如何创建视图以仅显示所有交易中的买方名称、卖方名称和产品名称?

database-agnostic view

-2
推荐指数
1
解决办法
135
查看次数

查找所有行中的所有列都为空的表

我需要找到所有表的名称,其中表的所有列都NULL在每一行中。

我可以NULL使用以下查询获取允许值的表:

SELECT * FROM sys.objects A
WHERE TYPE = 'U'
AND NOT EXISTS
(   
    SELECT 1 FROM sys.all_columns B
    WHERE B.is_nullable = 0
    AND A.object_id = B.object_id
)
Run Code Online (Sandbox Code Playgroud)

但是我需要找到所有行和列所在的表NULL,图中显示了一个示例:

示例表

sql-server

-2
推荐指数
1
解决办法
5277
查看次数

将 URL 字符串拆分为列

给定字符串:

URL:'ID=1!&user=xxx&depart=21&companyId=43&workOrder=67'
Run Code Online (Sandbox Code Playgroud)

我需要得到结果:

Sno ID user  depart companyId  workOrder
1   1! XXX   21      43         67 
Run Code Online (Sandbox Code Playgroud)

注意:该列可能会增加。

我正在使用 SQL Server 2008 R2。

sql-server sql-server-2008-r2

-2
推荐指数
1
解决办法
2438
查看次数

为什么最终的“where”语句(其中 binary_variable = 0)会为 Oracle 查询增加分钟数?

我会有这样的查询:

select order_number, cart_value, is_Europe from (
select order_number, sum(product_values) as cart_value, max(is_EUR) as is_Europe
from products
group by order_number
) ordervalues
where is_Europe = 1
Run Code Online (Sandbox Code Playgroud)

注意最后一行。

假设子查询返回 30 行,其中 15 行的 is_Europe 为“1”,另一个为“0”。换句话说,花生。

但是...添加最后一行使查询从 20 秒变为 3+ 分钟并计数。将它嵌套在许多子查询中。

现在,我想我理解了 SQL 逻辑,因为它首先运行子查询,并且……一个微不足道的 where 语句……过滤 30 行……需要几纳秒。但不是与甲骨文。

这里发生了什么?

20 秒给我完整的结果集,然后只需隐藏带有“1”或“0”(无论我选择哪个)的行——这似乎是一项不可能完成的任务。

这是来自 PLSQL 的执行计划/解释计划。请注意,实际上,查询非常复杂,包含等级、组等......嵌套子查询......但是最后的事情需要 20 秒,最后的 append where 语句(即使提升了一个新的级别)打破了它......

执行计划 - 解释计划

实际上它更复杂(除了我的问题,它应该在子查询之后运行并过滤 30 行,对吗?实际上......结构类似于大陆(EUR,NA,ASIA)和一个函数调用 max (decode continent, 'EUR', 1,0) as Is_EUR group by order_id。大洲是一个例子,它实际上是一些随机维度。它确定订单是否曾经“欧洲”或其他什么。这是最快的方式包括“是”和“否”。我想我可以在这里重写查询,只是很难定期更改。为什么 Oracle 不简单地听取常识?

oracle

-2
推荐指数
1
解决办法
91
查看次数

20亿列数据从varchar转int的缺点

我想将一列从 转换varchar(50)bigintint

SQL Server 2012中表有20亿条数据有什么缺点?

数据长度为 11,数据只有数字。它们被存储为 varchar。现在我必须为它创建索引。所以我想我必须转换int为创建索引。该表没有约束和索引。目前没有人使用那张桌子。例如:

data
-----
12345678911
12345678915
12345678911
12345678911
12345678914
12345678913
12345678912
Run Code Online (Sandbox Code Playgroud)

sql-server alter-table sql-server-2012

-2
推荐指数
1
解决办法
218
查看次数

为什么带有 CLUSTERED 索引的 VIEW 不使用该索引?

我有一个视图,它有一个聚集索引和其他非聚集索引。

SELECT即使我选择了一个索引列,一个简单的查询也不使用任何索引。

这可能是什么原因?

我在 Windows NT 6.1 (Build 7600) 上使用 Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 企业版

sql-server optimization sql-server-2008-r2 materialized-view

-3
推荐指数
1
解决办法
1611
查看次数

数据库服务器的可扩展性是否不如 Web 服务器?

是不是可以通过虚拟化来扩展数据库服务器,就像永远一样?我喜欢将大部分工作负载保留在数据库服务器上,因为它优化了查询,并且该架构减少了 db 服务器和 web 服务器之间的带宽使用。有什么理由我不应该在可扩展性方面这样做吗?

architecture scalability virtualisation

-3
推荐指数
1
解决办法
91
查看次数

我可以针对另一个实例上的表创建视图吗?

我需要从不同服务器但相同域上的另一个 SQL Server 查询表,但我不确定如何才能做到这一点。

我尝试了这个答案中的解决方案但它对我不起作用,因为我得到了 SQL Server 2000(请不要讨厌 :-))。

当我尝试给出的解决方案时,我收到此错误:

第 23 行:“-”附近的语法不正确。

这是因为命令与 SQL Server 2000 不兼容。

编辑

SELECT * FROM AnotherServer.AnotherServerDatabase.Server.Table1
Run Code Online (Sandbox Code Playgroud)

sql-server-2000 view

-3
推荐指数
1
解决办法
1万
查看次数

SQL Server 2008R2 和 SQL Server 2014 有什么区别?

我想将我的项目从 SQL Server 2008 R2 迁移到 SQL Server 2014。但我想了解数据库引擎的 T-SQL 2008 R2 和 2014 之间的区别是什么?我的意思是 SQL Server 2014 是否有任何终止语法?从 2008 年到 2012 年,FAST 的使用被禁用。

sql-server upgrade

-3
推荐指数
1
解决办法
2万
查看次数

运行 SSIS 包的 SQL Server 代理作业错误

我已经设置了一个 SQL Server 代理作业来运行 SSIS 包,但它失败并出现错误:

此作业失败。作业由附表 1114 调用。

有谁知道我为什么会收到这个错误?我在网上搜索过,但找不到明确的答案。

sql-server ssis sql-server-agent

-3
推荐指数
1
解决办法
2815
查看次数