分类:技术 相关文章

通俗易懂地理解数据仓库中的维度表和事实表

在数据仓库的建设和数据分析中,维度表和事实表是两个非常重要的概念。对于初学者来说,理解这两者的区别可能有点抽象,今天我会用最通俗的语言和简单的例子,帮助大家更容易理解它们。 1. 什么是事实表? 事实表是记录“发生的事情”的表,它存储了每一条具体的交易、事件或行为。换句话说,事实表就是记录了某件事在某个时间点发生的具体细节。事实表通常包含与这些事件相关的数值数据,比如数量、金额等。 •通俗理解:事实表就像一本日记,记录着发生了什么、什么时候发生的、涉及了哪些人或物。 事实表的特点: •记录实际发生的事务或事件。 •通常包含数值数据(如数量、金额、持续时间等)。 •每一行都是某个具体事件的一个实……

继续阅读»»»

◷2024/09/11   @铂昂士   ▤技术   ⚑

Teradata 操作语言 — SQL

根据各种 SQL 语句的功能不同,可以将其分成以下三大类: (1) 数据定义语言 (DDL) :用来在系统中创建或修改各种对象的结构,也可以用来删除系统中已有的对象,其命令集中主要包括: – CREATE : 创建一个新的数据库,用户,数据库对象或索引 – 删除一个已存在的数据库,用户,数据库对象或索引 – 修改一个表结构和保护定义,启动或禁止触发器 (2) 数据操作语言 (DML) :用来存取对象中的信息. 因此, DML 是 SQL 中使用最频繁的语言.其命令集中主要包括: – SELECT : 执行关系查询 – INSERT : 在表中增加新行 – UPDATE : 修改表中已存在行的值……

继续阅读»»»

◷2011/03/4   @铂昂士   ▤技术   ⚑

Teradata 连接操作 — 查询条件的使用

在内连接中加入条件,无论是加到 join 子句,还是加到 where 子句,其效果完全一样. 外连接情况就不同了: 当把条件加入到 join 子句时,数据库会返回外连接表的全部行,然后使用指定的条件返回第二个表的行. 当把条件放到 where 子句时,数据库先进行连接操作,然后使用 where 子句对连接后的新表进行数据筛选. (此处有待验证,印象中,teradata 会先进行 where 条件的限定,再做连接)

◷2011/03/4   @铂昂士   ▤技术   ⚑

Teradata SQL 语句优化通用方法–索引

建立合理的索引,索引的设计要建立在对各种查询的分析和预测上,遵循以下原则: – 有大量重复值,且经常有范围查询,例如:(between , > , < , >= , <= ) 和order by ,group by 发生的列,可考虑建立群集索引. – 经常同时存取多列,且每列都含有重复值可考虑建立组合索引. – 组合索引要尽量使关键查询形成索引覆盖,其前导列一定是使用最频繁的列. 有索引的尽量用索引,用到索引的条件写在前面.

◷2011/03/4   @铂昂士   ▤技术   ⚑

Teradata SQL 优化的通用方法–规避全表查询

字段提取要按照”需多少,提多少”的原则,查询时不要返回不需要的行,列,避免使用 “select * ” 进行全表查询 where  条件中任何对列的操作都将导致表扫描,它包括数据库函数,计算表达式等等,查询时尽量将操作移至等号右边. 尽量避免 Like , in , or, not 等引起全表扫描的操作符. 避免相关子查询,如果子查询不可避免,那么要在子查询中过滤掉尽可能多的行 避免或简化排序 变量名称尽量一致

◷2011/03/4   @铂昂士   ▤技术   ⚑

TERADATA SQL 语句优化通用方法–合理使用命令提高效率

最近几篇关于 Teradata 的日志,来源于互联网,在阅读的过程中,感觉有些说法和我的认识存在一些差距,我会标红表示疑问,哪位有不同的见解,欢迎留下脚印: 注意 union 和 union all 的区别, union all 效率更高 在没有必要时不要使用 distinct 和 order by , 它同 union 一样会使查询变慢 between 在某些时候比 in 速度更快, between 能更快的根据索引找到范围 用 or  的子句可以分解成多个查询,并且通过 union 连接多个查询.他们的速度中同是否使用索引有关.  (这样可以提高效率吗?) 在 in 后面值的列表中,将出现……

继续阅读»»»

◷2011/03/4   @铂昂士   ▤技术   ⚑

Teradata SQL 优化举例–where 的二个原则

第一个原则:在 where 子句中应该把最具限制性的条件放在最前面. – 在下面的两条 select 语句中: select * from table 1 where col1 <= 10000 and col1 >=0; select * from table 1 where col1 >=0 and col1 <= 10000; -如果数据表中的数据 col1 都>=0 ,则第一条语句要比第二条select 语句效率高的多,因为第二条语句的第一个条件耗费了大量的系统资源. 第二个原则: where 子句中字段顺序应和索引中字段顺序一致.

◷2011/03/4   @铂昂士   ▤技术   ⚑