sql基础

(一).sql性能下降原因

    a.  sql语句写的烂,比如select *,简而言之就是让数据库干了不需要干的活

    b.  没有建立索引,或者索引失效

            索引失效的情况包括没建好和没使用好,

                   1.没建好:

                           索引设在特征性不明显的字段 ,比如一张user表,有一个字段是性别sex,建立在sex意义不大.

                           索引设在不常用的字段

                   2.没用好:sql语句没写好,导致建立好的索引没用上,或者只用到了一部分

    c.   关联查询太多join

    d.    服务器调优以及各个参数设置(缓冲,线程数等等)

(二). sql执行顺序

       1.开发者写的顺序


       2.数据库的执行顺序


3.七种join

    这里定义图的顺序编号规则为从左到右,从上往下的顺序(中间的AnB那个为编号3)


1.  select <select list> from tableA A left join on tableB B on A.key=B.key

2.  select <select list> from tableA A right join on tableB B on A.key=B.key

3. select <select list> from tableA A inner join on tableB B on A.key=B.key

4. select <select list> from tableA A left join on tableB B on A.key=B.key where B.key is NULL

5. select <select list> from tableA A right join on tableB B on A.key=B.key where A.key is NULL

6. select <select list> from tableA A full outer join on tableB B on A.key=B.key

7. select <select list> from tableA A full outer join on tableB B on A.key=B.key where A.key is NULL or B.key is NULL

  由于mysql不支持(oracle支持)full outer join ,所以后面两种JOIN可以利用union的自动去重功能重新构建,

  第六种sql可以变成

    select <select list> from tableA A left join on tableB B on A.key=B.key

         union

     select <select list> from tableA A right join on tableB B on A.key=B.key

  第七种sql可以变成

    select <select list> from tableA A left join on tableB B on A.key=B.key where B.key is NULL

        union

   select <select list> from tableA A right join on tableB B on A.key=B.key where A.key is NULL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值