• MySQL查询优化介绍


    查询优化

    LIKE查询

    之前的查询大都是精准查询,更多的是模糊查询

    语法
    SELECT
    *
    FROM
    table_name
    WHERE
    condition
    LIKE
    condition
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    %

    SQL LIKE子句中使用百分号来表示任意字符,如果没有使用任何%就相当于等于=

    比如

    SELECT
    *
    FROM
    timi_adc
    WHERE
    hero_name LIKE '%孙%'A;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    两个结果公孙离,孙尚香

    %的位置会决定搜索结果的不同,

    %孙%这个字符串含

    孙%这个字符串以孙开头

    %孙表示以孙结尾

    _

    这个符号和%不同

    如果忘记孙尚香,只记得X尚香,可以写:

    SELECT
    *
    FROM
    timi_adc
    WHERE
    hero_name LIKE '_尚香'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    _尚香%尚香的区别在前者不能匹配公孙尚香,后者可以

    AND&OR

    多个条件

    语法
    SELECT * FROM table_name WHERE conditionA AND/OR conditonB;
    
    • 1

    比如

    SELECT
    *
    FROM
    timi_adc
    WHERE
    win_rate>0.5
    AND win_rate<0.51
    OR win_rate<0.47;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    AND/OR就是且/或,有时需要加上()来分隔条件

    IN/NOT IN

    IN语句是一种精准查询也需要配合WHERE使用

    语法
    SELECT * FROM table_name WHERE colume IN (conditionA,conditionB);
    
    • 1

    比如

    SELECT
    *
    FROM timi_adc
    WHERE
    fever IN ('T0','T3');
    
    • 1
    • 2
    • 3
    • 4
    • 5

    等价于

    SELECT
      *
    FROM
      timi_adc
    WHERE
      fever = 'T0'
      OR fever = 'T3';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    可以简化语法

    NOT IN/NOT LIKE

    就是在IN前面加一个NOT,表示非,否定这个条件,比如

    SELECT
    *
    FROM
    timi_adc
    WHERE
    fever NOT IN ('T0');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    括号不能省略

    NOT LIKE 子句也是否定,比如

    SELECT
    *
    FROM
    timi_adc
    WHERE
    hero_name NOT LIKE '%孙%';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    NULL值的处理

    如果当提供的查询条件字段为NULL时,SELECT命令可能无法正常工作

    NULL值

    mysql为处理NULL提供了三种运算符

    1. IS NULL:当列值为NULL时返回true

    2. IS NOT NULL:当列的值不为NULL时返回true

    3. <=>:比较操作符,当比较的两个值都为NULL时或者相等时返回true

    不能使用=NULL或者!=NULL来查找NULL值!

    语法
    SELECT field_name1,field_name2
    FROM table_name
    WHERE field_name2 IS NOT NULL/IS NULL
    
    • 1
    • 2
    • 3

    可以根据这个来查询不为NULL或者为NULL的数据,比如

    SELECT
      id,
      mobile
    FROM
      student
    WHERE
      mobile IS NOT NULL;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    python数据结构与算法-07_哈希表
    某保险企业容器云 PaaS 平台实践经验分享
    java date操作
    成功解决“ModuleNotFoundError: No module named ‘tensorflow_datasets‘”错误的全面指南
    Java:Java中单元测试的最佳实践
    例39:使用List控件
    C++,内联函数、对象、类、this
    Opencv——can‘t open/read file: check file path/integrity的解决办法
    带长度限制的最大子段和,无名一
    【python之django1.11框架四】模型层(ORM语法)的介绍
  • 原文地址:https://blog.csdn.net/RicardoSimple/article/details/126204991