• MySQL-sql语句


    mysql varchar类型字段=0取出的是什么

    1.表字段applyStatus设计为varchar型,在查询语句中条件写的是写的是applyStatus=0 而不是applyStatus='0',结果中查出来一堆applyStatus为null的数据

    偶然发现一个奇葩问题,varchar类型字段=0取出的东西什么都有,有中文,有数字字母组合,但是却不是全集,这是怎么回事?
    当比较数字和varchar时,mysql会把varchar转换为数字,首字符为数字0的,或者其他字符的都会转换为0,varchar类型字段=0 只能排除首字符为非零数字的字符串

    2.order by 与索引
    ORDER BY 通常会有两种实现方法,一个是利用有序索引自动实现,也就是说利用有序索引的有序性就不再另做排序操作了。另一个是把结果选好之后再排序。

    order by的字段不在where条件不在select中     有排序操作 

    order by的字段不在where条件但在select中     有排序操作 

    order by的字段在where条件但不在select中     无排序操作 

    order by的字段在where条件但不在select中(倒序)     无排序操作

    结论: 

    当order by 字段出现在where条件中时,才会利用索引而无需排序操作。其他情况,order by不会出现排序操作。 

    一条SQL实际上可以分为三步。

    1.得到数据

    2.处理数据 

    3.返回处理后的数据 

    比如上面的这条语句select sid from zhuyuehua.student where sid < 50000 and id < 50000 order by id desc

    第一步:根据where条件和统计信息生成执行计划,得到数据。 

    第二步:将得到的数据排序。 

    当执行处理数据(order by)时,数据库会先查看第一步的执行计划,看order by 的字段是否在执行计划中利用了索引。如果是,则可以利用索引顺序而直接取得已经排好序的数据。如果不是,则排序操作。 

    第三步:返回排序后的数据。 

  • 相关阅读:
    SPI(1)——Documentation/spi/spi_summary.txt翻译
    TCP协议详解(TCP报文、三次握手、四次挥手、TIME_WAIT状态、滑动窗口、拥塞控制、粘包问题、状态转换图)
    Linux设备树(3)——Linux内核对设备树的处理
    Linux设备树(2)——设备树格式和使用
    [转]Android的taskAffinity
    [转]深入了解iPad上的MouseEvent
    NG2入门
    TypeScript 素描
    TypeScript 素描
    TypeScript 素描
  • 原文地址:https://www.cnblogs.com/hongyedeboke/p/9372632.html
Copyright © 2020-2023  润新知