小编Bel*_*Bob的帖子

加入与EXISTS的表现

一般来说,使用JOIN选择行与EXISTS where子句之间是否存在性能差异?搜索各种问答网站表明联接更有效率,但我记得很久以前在Teradata中学习EXISTS更好.

我确实看到了其他SO答案,像这样这个,但我的问题是特定于Teradata.

例如,考虑这两个返回相同结果的查询:

select   svc.ltv_scr, count(*) as freq
from     MY_BASE_TABLE svc
join     MY_TARGET_TABLE x
on       x.srv_accs_id=svc.srv_accs_id
group by 1
order by 1
Run Code Online (Sandbox Code Playgroud)

-和-

select   svc.ltv_scr, count(*) as freq
from     MY_BASE_TABLE svc
where exists(
    select 1
    from   MY_TARGET_TABLE x
    where  x.srv_accs_id=svc.srv_accs_id)
group by 1
order by 1
Run Code Online (Sandbox Code Playgroud)

两个表上的主索引(唯一)是'srv_accs_id'.MY_BASE_TABLE相当大(2亿行),MY_TARGET_TABLE相对较小(200,000行).

EXPLAIN计划有一个显着的区别:第一个表示两个表"通过RowHash匹配扫描"连接,第二个表示"通过全行扫描".两者都说它是"全AMP加入步骤",总估计时间相同(0.32秒).

两个查询都执行相同的操作(我正在使用Teradata 13.10).

类似的实验找到一个比较LEFT OUTER非匹配具有相应的连接是NULL where子句的NOT EXISTS子查询也确实表现出的性能差异:

select   svc.ltv_scr, count(*) as freq
from     MY_BASE_TABLE svc
left outer join MY_TARGET_TABLE x
on       x.srv_accs_id=svc.srv_accs_id …
Run Code Online (Sandbox Code Playgroud)

sql teradata

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

单个查询中多个SQL集运算符的作用是什么?

我试图了解具有多个"set"运算符的现有查询发生了什么.我尝试过的各种网络搜索都没有透露任何内容,也没有我对Teradata文档的快速回顾.

这是我正在查看的查询的伪代码表示:

SELECT column from table1
UNION
SELECT column from table2
UNION
SELECT column from table3
MINUS 
   (select column from table 4)
UNION
SELECT column from table4
Run Code Online (Sandbox Code Playgroud)

我最感兴趣的是如何MINUS处理; 它是仅从table3中的前一个SELECT中减去行还是从组合结果集中减去?请注意,MINUS表达式中的括号位于我正在查看的代码中.

此外,我假设最后一个UNION不受MINUS操作的影响.

我确信我可以通过创建一些示例表来解决这个问题,但我现在无法访问数据库(试图在今天从家里完成一些工作).

仅供参考:Teradata MINUS与ANSI相同EXCEPT.

sql teradata

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

如何识别Teradata用户的所有权利?

我正在寻找一种方法来识别授予特定数据库中用户的默认权限.我试过这个:

select *
from dbc.allrights
where username='user-id'
  and databasename='database-name'
Run Code Online (Sandbox Code Playgroud)

上面有两个问题; 首先,如同编写的那样,查询为user-id拥有的每个表的每个permisison返回一行,并且它包括专门授予的权限.其次,如果user-d根本没有创建任何表,则不返回任何行.

我希望有另一个DBC视图包含用户和数据库的默认权限.

teradata

2
推荐指数
2
解决办法
4万
查看次数

使用SUM()将SQL语句转换为Linq/Entity Framework

我试图弄清楚如何使用Linq将以下SQL语句转换为Entity Framework:

SELECT SUM(Column1) AS Correct
     , SUM(Column2) AS Incorrect
     , UserName
FROM   Stats 
WHERE (StatType = 0)
GROUP BY UserName
ORDER BY UserName 
Run Code Online (Sandbox Code Playgroud)

出于此问题的目的,DB中的所有列类型都是INT类型,每个用户有多行数据.我基本上在输出中需要3列,每个用户的选择总数正确和不正确.

这看起来像是一个简单的SQL语句,但无论我在LinqPad这样的东西中尝试过,我总是会遇到错误.我必须错过一些比较简单的东西.一旦我开始添加".Sum"子句,我就会遇到编译错误等.

Stats.Where(s => s.StatType == 0)
     .GroupBy(s => s.UserName)
     .Select(x => new {  Correct = x.Column1
                       , Incorrect = x.Column2
                       , User=x.UserName})
     .ToList()
Run Code Online (Sandbox Code Playgroud)

c# sql linq entity-framework-4

1
推荐指数
1
解决办法
9105
查看次数

如何在sql select语句中创建列并设置默认值

我正在尝试为已经派生的列"Sub1"设置默认文本值这可能吗?我已经使用值0为要派生的列创建了占位符.如果它很重要,我正在Teradata中工作.....谢谢!

select c_clm
,dt.Claimant_Name
,dt.i_ssn
,0 as "Time_Period"
,0 as "Unit_ID",
/*,idv.C_PDT AS "Product"
,er.C_FRM_POL AS "Group Product",*/
(case
 when idv.c_pdt is null then 'GLTC' 
 else idv.c_pdt
 end) as "Product_ID"
,c_ams_clm as "DBS_UserID"
,upc_indiv_org_id as "DBS_EEID"
,0 as "Categ"
,0 as Categ_sort
,0 as "Sub1"
,0 as "Sub1_Sort"
,0 as "Sub2"
,0 as "Sub2_Sort"
,0 as "MTD_Num" 
,0 as "MTD_Denom"
,dt.i_pol as "Policy_Number"
,COALESCE (erpol.n_pol,idv.n_pol, ks.n_pol) 
Run Code Online (Sandbox Code Playgroud)

sql teradata

0
推荐指数
2
解决办法
5万
查看次数

mysql 2在一个查询中选择SELECT

我希望这两个SELECT查询给出一个结果,然后我想按顺序排序 date_time

选择1:

"SELECT * FROM `table` WHERE `f_id` = '$uid' AND `t_id` = '$pid'"
Run Code Online (Sandbox Code Playgroud)

选择2:

"SELECT * FROM `table` WHERE `f_id` = '$pid' AND `t_id` = '$uid'"
Run Code Online (Sandbox Code Playgroud)

我试图将它放在一个WHERE子句中,但这是不可能的,我也尝试将它们放在子查询中,但这使得SELECT 2加入SELECT 1:/我想要这两个查询的一个输出数组,按顺序排列date_time.这怎么可能?

php mysql select where

0
推荐指数
1
解决办法
5267
查看次数

是否应该在Teradata的UNIQUE PRIMARY INDEX上收集统计数据?

很久以前,我被告知我不应该收集关于Teradata UPI的统计数据,但我从来没有理解其中的原因.它可能与我们当时运行的版本有关.它也可能是UPI不需要统计数据所以收集它们是浪费时间.

我的问题是:既然我们正在使用TD 13.10(并且很快转向TD 14),我应该继续这种做法吗?如果是这样,那么表的大小是否有所不同,例如1000行AVT表与1亿行详细信息表,两者都有连接操作广泛使用的单列UPI?

任何特定的Teradata文档参考将不胜感激.

teradata

0
推荐指数
1
解决办法
2100
查看次数

标签 统计

teradata ×5

sql ×4

c# ×1

entity-framework-4 ×1

linq ×1

mysql ×1

php ×1

select ×1

where ×1