• 培训学习心得3.15


    limit分页优化

    limit语句一般用来对sql语句的查询结果进行约束,表示只挑选出某几条,具体用法如下:

    select * from user order by age asc limit 50,5;

    上面语句表示,对user表中的所有行按照age排序,并挑选出其中的51-55行.若将上面的limit(50,5)换成limit 5 则表示,挑选结果中的1-5行;

    由于上面的语句是select * ,要获得所有的属性,因此不会用到索引,它会对整个表进行重新的排序然后查找,这样的效率是十分低下,速度是十分慢的.

    一般都会对表的主键建立索引,因此我们可以这样优化:

    select * from user inner join (select id from user order by age asc limit 50,5);

    这样数据库会先按照主键索引查询年龄第51-55小的成员的主键id,再在user表中查询出对应的其它属性.

    另外 limit语句他也可以用来对delete语句进行限制,具体如下:

    delete from user where age=20 limit 5;

    上面的语句表示从user表中一次最多删除掉5行;

    内连接和外连接

    内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行.

    左向外连接的结果集包括LEFT  OUTER子句中指定的左表的所有行,而不仅仅是连接列所匹配的行。

    select   a.*,b.*   from   a   left   join   b     on   a.id=b.id;

    右向外连接是左向外连接的反向连接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

    select   a.*,b.*   from   a   right   join   b     on   a.id=b.id;

    完整外部连接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

    select   a.*,b.*   from   a   full   join   b     on   a.id=b.id;

    交叉连接。交叉连接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉连接也称作笛卡尔积。

    select * from table1 cross join table2;

    事务

    事务是数据库的执行单位。它由有限得数据库操作序列组成得。但不是任意得数据库操作序列都能成为事务。事务具有一下四个基本特性,也就是常说的(ACID):

    原子性(Atomicity):事务只存在被执行完毕和为执行两种状态,若因为某些原因事务执行到一半后失败,则必须会回滚消除对数据库的影响;

    一致性(Consistency):在事务执行前,数据库中数据是一致的,在执行完后也是一致的.所谓一致性简单地说就是数据库中数据的完整性,包括它们的正确性。

    隔离性(Isolation):事务和事务之间是完全隔离,相互感知不到对方对存在的.多个事务冰法执行,应像各个事务独立执行一样.

    持久性(Durability):事务一旦执行成功以后,它对数据库的影响是持久的,即使数据库出错也应该能够恢复.

  • 相关阅读:
    Row versus Set Processing, Surprise!(集合处理和单行处理数据的差异性)
    SVN导出增量包的方法
    Number of Digit One
    VPS+LNMP+WordPress搭建个人网站
    寻找最小的k个数(大顶堆方法)
    二叉搜索树转化为有序双向链表(C语言)
    LeetCode 345 Reverse Vowels of a String
    LeetCode 278 First Bad Version
    LeetCode 205 Isomorphic Strings
    LeetCode 88 Merge Sorted Array
  • 原文地址:https://www.cnblogs.com/userrain/p/5281460.html
Copyright © 2020-2023  润新知