1,行转列 lead lag decode case when 2,列转行 union all 3,多表联合 1,避免数据发散,检查是否关联条件有问题,是否少了某个关联字段导致查询结果集变大 4,oracle 怎么进行性能优化 sql语句优化: 1,去重用group by 代替 distinct 2,用substr 和 instr 代替 like 3,连接和分组时先使用where条件过滤 4,用临时表with as 5,用decode 代替 case when 索引优化: 1,经常使用的列上加上索引 2,经常需要order by,group by,distinct,where 列上加上索引 分区优化: 1,对于数据量大的表使用使用分区,选择合理的分区方式:范围、列表、哈希、组合 2,原表如果没有分区,就建一个一模一样的表,然后把数据导过来 通过优化器hints优化 1,优化器是sql分析和执行的优化工具,负责生成、制定sql的执行计划 2,优化器主要看执行顺序、表扫描方式、关联机制、耗费 5,如何避免笛卡尔积 1,先确定数据要用哪些表 2,使用内连接 3,两张表的连接关系是唯一的 4,使用group by 6,hints 7,sql命令: 1,数据定义语言(DDL),包括 CREATE(创建)命令、ALTER(修改)命令、DROP(删 除)命令等。  2,数据操纵语言(DML),包括 INSERT(插入)命令、UPDATE(更新)命令、DELETE (删除)命令等。 , 3,数据查询语言(DQL),包括基本查询语句、Order By 子句、Group By 子句等。  4,事务控制语言(TCL),包括 COMMIT(提交)命令、ROLLBACK(回滚)命令。  5,数据控制语言(DCL),GRANT(授权)命令、REVOKE(撤销)命令。 8,跑数比较慢的原因: 1,查看执行计划,检查索引是否生效 2,优化sql,增加引擎,过滤、关联、排序、分组都可以加快 3,使用分区,减少数据量 4,如果使用存储过程,尽量避免使用游标 5,如果使用hints,增加并行parallel 6,减少关联的数据量,先过滤后关联 9,优化器: 1,优化器是sql分析和执行的优化工具,负责生成、制定sql的执行计划 2,种类:RBO 基于规则的优化器、CBO 基于代价的优化器(cost、time、cpu) 3,执行计划由oracle的优化器 CBO 来制定,优化器会选择最优的方案,也就是耗费(cost)最低的方案来作为执行计划 4,如何查看执行计划:执行完sql语句后,按f5来查看,或者在命令窗口输入:sql > explain for select * from table 5,看什么内容: a,执行顺序,缩进最多的先执行,同一级的动作遵循最上最右先执行 b,表的扫描方式:全表扫描、索引扫描 c,关联机制:嵌套循环、哈希连接、排序-合并连接 d,耗费 10,有一张订单表,有2个字段,一个订单时间,一个订单金额,我要看每5分钟的所有信息 11,hive和数据库的区别 a,hive和数据有类似的sql查询语言 b,hive存储在HDFS,数据库是保存在 块设备 或者本地文件系统中 c,hive 中不建议对数据改写,而数据库通常需要继续修改,hive的延迟较高 d,hive支持大规模的数据计算,数据库支持规模较小 12,hive是怎么执行的 13,hadoop 是什么 hadoop 是一个大的存储,未来会替代数据库,他的优势就是HDFS分布式文件存储,把数据存储在多台机器上,也就是集群 14,hadoop hive 数仓的基本原理 1,hive是利用HDFS的存储数据,数据是存储在hadoop上,sql最终会转换成MapReduce来执行,hive是基于hadoop的一个数据仓库工具 15,MapReduce是如何工作的 16,之前项目的规模,如果很多几百上千张表,怎么处理才不会出错,如果出错了,怎么处理 17,缓慢变化维: 针对历史记录要保存,统一都是拉链表 18,什么是锁,什么是死锁 锁是某个用户在更新、修改数据时,锁定当前表或记录,不允许其他用户修改; 死锁就是两个会话,每个会话持有对方想要的资源,因争夺资源而造成的互相等待的现象 首先要有管理员的权限,然后再plssqlidev工具中打开:工具-会话窗口,找到带锁的会话,然后kill掉这个会话 19,怎么做大数据迁移 20,存储过程怎么优化 1,避免使用游标 2,使用with as 或者临时表,避免同一个sql执行多次 3,使用其他sql优化方法 21,如果发生锁,怎么处理 22,怎么用日志去捕获异常,用哪些精准捕获 23,truncate 在存储过程中能直接使用吗 不能,要使用动态sql,在存储过程中begin和and中间写