zoukankan      html  css  js  c++  java
  • MySQL一些中重要命令

    前言:

      最近在面试的过程中,深感对MySQL一些重要命令的缺失。借着这个机会,补补这块的知识。不让自己只会增删查改,懂一些高级的东西

    • limit 用法
    • order by 用法
    • in 和 between的用法
    • join的用法

    (一)limit用法

    我们看下面的代码:

     1 select id, name from table limit 5, 10

    一个简单的limit命令,limit m, n 代表从m+1个开始取n行数据,输出

    上面也就是从第六行开始,输出10行。也就是输出6-15行

    假设我们有如下表:

    数据大概为100W条数据。

    执行如下命令:

    1 select * from BookIndex limit 10, 10;

    用了0s,并且没有用索引。

    在执行如下命令:

    1 select * from BookIndex limit 1000000, 10;

    同样十条数据,却用了0.31秒。同样是全盘扫描。

    下面我用索引优化:

    用了0.17秒。 0.31/0.17  大概快了两倍左右吧。

    下面再次优化:

    0.00s,可以说快的不知一点两点的。

    记得用limit一定要用索引,并且如果m(偏移量)过大,先用where筛选一波数据出来在处理。

    (二)order by用法

    oder by 很是简单,而且是默认用了range索引。

    默认升序,可以加上desc变为降序。

    (三)in 和 between的用法

    我们可以从explain看出,不管是in还是between都是用了索引。

    而且between有一个强大的功能,和limit进行比较的时候。当偏移量较大,但取的数据量较小的时候,用between最为合适

    看一下的实验

    直接0.00s搞定,一点都不含糊。

    (四)join的用法

    • JOIN: 如果表中有至少一个匹配,则返回行
    • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
    • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
    • FULL JOIN: 只要其中一个表中存在匹配,就返回行

    "Persons" 表:

    Id_PLastNameFirstNameAddressCity
    1 Adams John Oxford Street London
    2 Bush George Fifth Avenue New York
    3 Carter Thomas Changan Street Beijing

    "Orders" 表:

    Id_OOrderNoId_P
    1 77895 3
    2 44678 3
    3 22456 1
    4 24562 1
    5 34764 65

    inner join:

    LastNameFirstNameOrderNo
    Adams John 22456
    Adams John 24562
    Carter Thomas 77895
    Carter Thomas 44678

    left join:

    LastNameFirstNameOrderNo
    Adams John 22456
    Adams John 24562
    Carter Thomas 77895
    Carter Thomas 44678
    Bush George  

    注意到没有最后一行OrderNo为空

    right join:

    LastNameFirstNameOrderNo
    Adams John 22456
    Adams John 24562
    Carter Thomas 77895
    Carter Thomas 44678
        34764

    后言:

    写完后,发觉好累,真的好累。写了两个多小时了,求爸爸让我上热门。

    不过对MySQL的一些理解也更加深刻了,尤其是limit的使用。

  • 相关阅读:
    .net中的委托
    GridView, DataList and ListBox 行 单击与双击事件处理
    ChineseCalendar类[转]
    数据契约(DataContract)
    XPath 语法(复习)
    正则表达式学习笔记
    瑞星笔试:现场上机做题[转]
    发送带有附件的电子邮件使用 Cdosys.dll 库
    DataContractJsonSerializer 类 操作json类型数据
    i guess a bug on Castle
  • 原文地址:https://www.cnblogs.com/wenbochang/p/8745527.html
Copyright © 2011-2022 走看看