Oracle 创建索引的10条原则:

1.小表不需要建立索引,比如emp表只有数十行记录,可以不建索引.

2.对于大表而言,如果经常查询的记录数目少于表中总记录的15%,可以创建索引.这个比例并不绝对,它与全表扫描速度成反比.

3.对于大部分列值不重复的列可建立索引.

4.对于基数大的列,适合建立B树索引,而对于基数小的列适合建立位图索引.

5.对于列中有许多空值,经常查询所有的非空值记录的列,应该建立索引.

6.Long和Long RAW 列不能建立索引.

7.经常进行连接查询的列上应该建立索引.

8.在使用CREATE INDEX语句穿件查询时,将最长查询的列放在其他列前面.

9.维护索引需要开销,特别是对表要进行插入和删除是,因此要西哦指标中索引的数量.对于主要用于读的表,索引多就是好处,带式,如果一个表经常被修改.则索引应少点.

10.在表中插入数据后创建索引.如果在装载数据之前创建索引,那么当插入每行是,Oracle都必须更改每个索引.


Group by 编写分组语句时,需要特别注意如下事项:

1.在Select列表中的任何列或表达式(非统计函数计算列)必须在group by子句中.

2.在group by 子句中的列或者表达式不必一定出现在select列表中

3.HAVING子句只能应用在GROUP BY 子句的后面,不能使用WHERE 子句来取代HAVING子句,否则将会产生异常.


Union 与 Union All的区别

1.Union运算会消除重复的记录,默认情况下会排序

2.Union All 并不消除重复行,并且默认情况下并不输出排序.


Delete 与 Truncate的区别

1.Delete语句一次只能删除正航记录,不能删除某个字段

2.删除表中的极酷可能会导致与其他表的引用完整性问题.

3.只会删除表中的记录,不会删除表要删除表用Drop

4.在删除之后可以用Rollback显式的执行撤销操作.

5.可以激发表的删除触发器

6.Truncate命令速度更快点,删除表中的所有行,并且释放该表所使用的表空间

7.Truncate不会激发表的删除触发器

8.Truncate语句属于DDL语句,不会产生撤销信息

9.如果表是主外键关系的主表,则无法清除内容,必须在执行Truncate语句之前禁用.