一、ORACLE中分区
创建分区是数据库优化的一种手段,范围分区是表分区的一种。
创建范围分区的关键字是"RANGE",创建该分区后,其中的数据可以根据分区键值指定的范围进行分布,当数据在范围内均匀分布时,性能最好。
注意:当表结构采用范围分区是,首先要考虑分区列应该符合范围分区的方法;其次要考虑列的数据值的取值范围;最后考虑列的边界问题。
写法:
范围分区时,分区键尽量不用字符型。如果字符型时要注意保持字符位数一致以避免出现意想不到的情况。
在创建分区的时候,values要由小到大,否则会报ORA-14037 分区界限过高的错误
二、Linux Shell 输出重定向
输出重定向是指命令的结果不再输出到显示器上,而是输出到其它地方,一般是文件中。这样做的最大好处就是把命令的结果保存起来,当我们需要的时候可以随时查询。Bash 支持的输出重定向符号如下表所示。
类 型 | 符 号 | 作 用 |
---|---|---|
标准输出重定向 | command >file | 以覆盖的方式,把 command 的正确输出结果输出到 file 文件中。 |
command >>file | 以追加的方式,把 command 的正确输出结果输出到 file 文件中。 | |
标准错误输出重定向 | command 2>file | 以覆盖的方式,把 command 的错误信息输出到 file 文件中。 |
command 2>>file | 以追加的方式,把 command 的错误信息输出到 file 文件中。 | |
正确输出和错误信息同时保存 | command >file 2>&1 | 以覆盖的方式,把正确输出和错误信息同时保存到同一个文件(file)中。 |
command >>file 2>&1 | 以追加的方式,把正确输出和错误信息同时保存到同一个文件(file)中。 | |
command >file1 2>file2 | 以覆盖的方式,把正确的输出结果输出到 file1 文件中,把错误信息输出到 file2 文件中。 | |
command >>file1 2>>file2 | 以追加的方式,把正确的输出结果输出到 file1 文件中,把错误信息输出到 file2 文件中。 | |
command >file 2>file | 【不推荐】这两种写法会导致 file 被打开两次,引起资源竞争,所以 stdout 和 stderr 会互相覆盖,我们将在《结合Linux文件描述符谈重定向,彻底理解重定向的本质》一节中深入剖析。 | |
command >>file 2>>file |
在输出重定向中,>
代表的是覆盖,>>
代表的是追加。
注意
输出重定向的完整写法其实是fd>file
或者fd>>file
,其中 fd 表示文件描述符,如果不写,默认为 是标准输出文件。
三、Linux Shell 输入重定向
输入重定向就是改变输入的方向,不再使用键盘作为命令输入的来源,而是使用文件作为命令的输入。
符号 | 说明 |
---|---|
command <file | 将 file 文件中的内容作为 command 的输入。 |
command <<END | 从标准输入(键盘)中读取数据,直到遇见分界符 END 才停止(分界符可以是任意的字符串,用户自己定义)。 |
command <file1 >file2 | 将 file1 作为 command 的输入,并将 command 的处理结果输出到 file2。 |
和输出重定向类似,输入重定向的完整写法是fd<file
,其中 fd 表示文件描述符,如果不写,默认为 0,也就是标准输入文件。
四、两种更新update和merge
update和merge只用于更新时,两种方式是可互更换的
update适用于更改单表速度快稳定性好;
merge适用于根据一张表或多表联合查询的连接条件对另外一张表进行查询;
merge不支持更改字段放入on【会报错 ORA-38104: 无法更新 ON 子句中引用的列: XX】
merge语句写法:
1.MERGE INTO test T1
2.USING (SELECT OWNER , OBJECT_NAME , MAX(ID) ID FROM T GROUP BY OWNER, OBJECT_NAME) T
3.ON (T.OWNER = T1.OWNER AND T.OBJECT_NAME = T1.TABLE_NAME)
4.WHEN MATCHED THEN UPDATE SET T1.ID = T.ID
5.WHEN NOT MATCHED THEN INSERT VALUES (T.ID, T.OWNER, T.OBJECT_NAME);
第一行 命名目标表并给别名T1
第二行 using子句提供merge操作的数据源,命名T
第三行 on子句指定合并的条件
第四行 when matched then 子句判定条件符合则对表T1做什么改变(或删除)
第五行 when not matched then 子句判断条件不符合则插入的操作