码迷,mamicode.com
首页 > 数据库 > 详细

Sql优化和体系结构

时间:2017-08-02 23:33:13      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:常见   style   对象   tin   teacher   情况   b树索引   安全   partition   

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优化和体系结构

标签:常见   style   对象   tin   teacher   情况   b树索引   安全   partition   

原文地址:http://www.cnblogs.com/wlym/p/7277059.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!