首页 > 代码库 > Sql优化和体系结构

Sql优化和体系结构

01、SQL优化与体系结构
本章目标:
1.了解sql优化基本技巧
2.掌握使用索引提高查询效率
3.了解对表进行分区操作
4.了解常见数据库对象
 
1.sql优化技巧
1)一般优化技巧:
     不要用*代替所有列名
     删除所有数据用truncate代替delete
     用not exists 代替 not in 
     用exists 代替 in
     用exists代替distinct
注:后三点在11g之前有用,11g之后本身进行了优化
 
第5条的实例如下:查询出出现在教师表里的不同的部门编号
 
select distinct t.deptno from teacher t where t.deptno is not null ;
 
select * from dept where exists (select 1 from teacher where teacher.deptno = dept.deptno)
 
2)表链接方法
     驱动表的选择
     where子句的连接顺序:表连接关系放在前面,过滤记录越多的条件字句应放置到后面
 
sql执行顺序是从右往左进行。
 
驱动表: from后面靠右的那个表就是驱动表(两张表都没有索引的情况);有索引的情况下,应该是没索引的那张表是驱动表
     驱动表要选择小表
 
3)索引
索引分为逻辑分类和物理分类,逻辑分类包括:单列或组合索引、唯一或非唯一索引、基于函数索引;物理分类包括:分区或非分区索引、B树索引、正常或反向键索引、位图索引
 
什么情况下可以创建索引?一般主要包括:频繁搜索的列、经常排序分组的列、经常链接的列、指定单独的表空间(可以增加IO性能)
 
索引使用原则:表中导入数据后再创建索引;在适当的表和字段上创建索引,如果经常检索的数据少于表中15%则需要创建;限制表中索引的数目
 
4)表分区
  把表中数据划分成若干部分,并存储在不同的位置。表分区的有点是能改善查询的性能,而且表也更容易管理,便于备份和恢复同时也提高了数据的安全性。
1 select * from jx0404 partition(pt_2016-2017-1);

 

Sql优化和体系结构