• 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
  • 相关阅读:
    Simulink-模块Moudle调用回调函数步骤
    算法比赛常识
    18-Java迭代器模式 ( Iterator Pattern )
    函数重入、函数重载、函数重写自己理解
    华为、思科选哪个更有前途?
    数据仓库与数据库的区别
    好看到爆炸的弹窗公告源码
    Leetcode.2786 访问数组中的位置使分数最大
    WMS仓储管理系统的主要类型及其特性和适用场景
    大数据之Hive(三)
  • 原文地址:https://blog.csdn.net/RicardoSimple/article/details/126204991