6.30
关于数据库的几点学习心得
1.Left Join.
多表连接的查询方式又分为以下几种:内连接,外连接和交叉连接。外连接又分为:左外连接,右外连接和全外连接。对于不同的查询方式,使用相同的join算法也会有不同的代价产生,这个是跟其实现方式紧密相关的,需要考虑不同的查询方式如何实现,对于具体使用哪一种连接方式是由优化器通过代价的衡量来决定的。
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行。
在给出的实例中。查询所有银行在2012年的贷款情况,列出银行名称、贷款企业数、贷款总额
Select Bname,count(distinct eno),sum(lamount)
From bankt left join loant on loant.bno=bankt.bno
Where year(ldate)=2012
Group by Bname
经过实践发现结果并不正确。
因为在这里用到的是左连接left join,它是以左表bankt为基础的,而在where选择条件中,却是对右表年限进行限定。在这里必须搞清基表是左表,否则结果将出错。
2.In与Exist
Select * From LegalEntityT
Where Eno
in (Select Eno From loant where lamount>1000)
Vs
Select * From LegalEntityT
Where Exists(
Select Eno From loant where loant.Eno= LegalEntityT.Eno
and lamount>1000)
其中,In ——遍历所有数据,比较集合每个元素
Exist ——可以使用到索引情况下,分块,效率高。
3.存储过程:
Create proc[edure] 存储过程名
[@参数名 数据类型[=default][OUTPUT]]
WITH ENCRYPTION
AS
Begin
TSQL语句
END。
①存储在本地,可绑定标识,存储在内存,忽略网络效率、不可靠。
②所有过程可编译,在编译后执行,再次执行时效率高
③模块化,可直接调用执行。
④可做加密。
⑤可用作专业代码生成,导入数据转换。
4.索引的使用
a.索引的工作:取决于物理执行计划中相应的数据参数
b.数据规模:5000条数据以上可以考虑建索引,实际需要考虑数据的增长趋势来进行设计
Oracal数据库至少在10000条以上才考虑建索引;
c.何时用到索引:数据批量操作时往往需要暂时去掉索引,即删除索引导入数据之后再生成索引、
d.关注度高的产品可以建索引
索引越多,操作时需要维护的代价越高,影响到数据库批量处理的效率。