数据库应用的部分理解

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.关注度高的产品可以建索引

    索引越多,操作时需要维护的代价越高,影响到数据库批量处理的效率。

猜你喜欢

转载自myziz.iteye.com/blog/2382329