一、in 和 not in 都走索引吗?

where 条件为 in 两个数值 走了索引。

where 条件为 not in 两个数值 没有走索引。
二、delete 和 truncate 的区别?
delete 是 dml 语句 删除数据可以加条件 删除数据可以恢复
truncate 是ddl 语句 删除数据不可以加条件 删除数据不可以恢复
三、Oracle 优化
1、Order By语句加在索引列,最好是主键PK上。
2、用EXISTS替换DISTINCT:EXISTS 使查询更为迅速,因为RDBMS核心模块将在子查询的条件一旦满足后,立刻返回结果.
(低效): SELECT DISTINCT DEPT_NO,DEPT_NAME FROM DEPT D , EMP E WHERE D.DEPT_NO = E.DEPT_NO And E.sex =man
(高效): SELECT DEPT_NO,DEPT_NAME FROM DEPT D WHERE EXISTS ( SELECT ‘X’ FROM EMP E WHERE E.DEPT_NO = D.DEPT_NO And E.sex =man );
四、Oracle 三大范式
1NF、数据库表中列都是单一属性,不可再分。
2NF、非主键字段依赖主键字段。
3NF、非主键字段与主键字段直接相关,而不间接相关
五、in 和 exists
select * from t1 where id in (select id from t2);
select * from t1 where exists (select 1 from t2 where t1.id=t2.id);
执行结果显示,两个 sql 分别执行 1.3s 和 3.4s 。
----------t1 表数据量为 100W, t2 表数据量为 200W 。
如果查询的两个表大小相当,那么用in和exists差别不大;如果两个表中一个较小一个较大,则子查询表大的用exists,子查询表小的用in;
对应于此处就是:
当 t1 为小表, t2 为大表时,应该用 exists ,这样效率高。
当 t1 为大表,t2 为小表时,应该用 in,这样效率较高。
select * from t2 where id in (select id from t1);
select * from t2 where exists (select 1 from t1 where t1.id=t2.id);
执行结果显示,两个 sql 分别执行 1.8s 和 10.0s 。
对于 in 来说,大表小表调换了内外层关系,执行时间并无太大区别。一个是 1.3s,一个是 1.8s。
对于 exists 来说,大小表调换了内外层关系,执行时间天壤之别,一个是 3.4s ,一个是 10.0s,足足慢了两倍。
六、SQL优化
1、创建索引
优点:查询速度读取快。
缺点:占内存,插入数据变慢。
(整表字段加索引的缺陷)
2、对表数据进行分区
优点
- 改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。
- 增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;
- 维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;
- 均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能。
缺点:
- 分区表相关,已经存在的表没有方法可以直接转化为分区表。不过 Oracle 提供了在线重定义表的功能。
3、脚本关键词的优化(in、exists)
- 外表数据量大,内表数据量小可使用 in ( in 可以理解为一个子查询,会先全表扫描再根据条件匹配)
- 外表数据量小,内表数据量大可使用 exists( exists 是匹配每行数据匹配上才满足条件)
七、Oracle和sql server的区别
- Oracle支持多种操作系统,sql server支持window系统
- Oracle的安全认证获得最高认证级别的ISO标准认证,而SQL Server并没有获得什么安全认证
- Oracle 性能最高, 保持windowsNT下的TPC-D和TPC-C的世界记录。SQL Server 多用户时性能不佳
八、数仓的基本架构(离线数仓)
ODS-DWD-ADS-BDS
ODS:类源层(源数据备份包导入还原原表)
DWD:整合层(通过逻辑处理整合各个模块的数据)
ADS:集市层(根据不同维度在DWD取数形成一个个宽表)
BDS:备份层(把DWD和ADS中的表每天全量备份到BDS中)
九、拉链表的理解
记录数据在某一时间区间内的状态
以及数据在某一时点上的变化的数据存储方式
存储的数据是数据的状态,新增、字段(金额变化)的数据
不是技术,而是解决方案。目的:节约存储空间
取2022-04-01日当天时间的数据

501

被折叠的 条评论
为什么被折叠?



