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)表分区 把表中数据划分成若*分,并存储在不同的位置。表分区的有点是能改善查询的性能,而且表也更容易管理,便于备份和恢复同时也提高了数据的安全性。