oracle数据库sql优化
- Sql的优化原则
- 尽量使用列名代替*号
- where 语句判断的顺序是从右往左,所以如果后面逻辑判断为and尽量把假的条件放在后面,如果是or应该尽量把真的数据放在后面
- 理论上尽量使用多表查询
- 尽量不要使用集合运算(集合运算会随着参与集合运算的个数越多效率越低,因为集合运算会访问多次表)
- 有外键约束会影响插入和删除性能
- sql中null值问题
- 包含null的表达式都为null
- null永远不等于null
- 如果集合中含有null不能使用not in 但是可以使用in (null的不能用等于,得用is,同理不等于也不能用得用is not null)
- 组函数(多行函数)自动虑空的功能;可以嵌套虑空函数来屏蔽他的虑空功能(nvl函数);
- 数据的完整性是指我们建立在表中的约束;
- 查询表中的数据通过主键查最快,因为它是unique,而unique本身是一个索引;
- distinct为去除重复放在要查询的字段前面,如果后面跟两个不同的字段的话,查询出来的是两个组合起来不重复的结果。概括起来就是distinct作用于后面所有的列
- oracle里面的dual伪表,它的存在是为了让我们操作方便,因为select语句都需要特定的对象来实现,如果我们不需要从特定的表中得到数据单纯的就是要得到我们想要的一些信息就可以利用伪表;
- oracle的语句别名的起发有三种形式
- Sql的优化原则
- 尽量使用列名代替*号
- where 语句判断的顺序是从右往左,所以如果后面逻辑判断为and尽量把假的条件放在后面,如果是or应该尽量把真的数据放在后面
- 理论上尽量使用多表查询
- 尽量不要使用集合运算(集合运算会随着参与集合运算的个数越多效率越低,因为集合运算会访问多次表)
- 有外键约束会影响插入和删除性能