优化-BINARY问题
今天遇到一个SQL优化的任务
执行计划如下:

EXPLAIN
SELECT
 ID,
 USER_NAME,
 PASSWORD,
 USER_STATUS,
 LOGIN_FAILED_COUNT,
 CUSTOMER_ID,
 CONVERT ( AES_DECRYPT( UNHEX( PHONE ), 'xxxx' ), CHAR ) AS PHONE,
 CONVERT ( AES_DECRYPT( UNHEX( EMAIL ), 'xxxx' ), CHAR ) AS EMAIL,
 MODIFY_TIME 
FROM
 OPM_USER_USER 
WHERE
 BINARY USER_NAME = 'zhuyajun'

图片说明
执行计划如下:

EXPLAIN
SELECT
 ID,
 USER_NAME,
 PASSWORD,
 USER_STATUS,
 LOGIN_FAILED_COUNT,
 CUSTOMER_ID,
 CONVERT ( AES_DECRYPT( UNHEX( PHONE ), 'xxxx' ), CHAR ) AS PHONE,
 CONVERT ( AES_DECRYPT( UNHEX( EMAIL ), 'xxxx' ), CHAR ) AS EMAIL,
 MODIFY_TIME 
FROM
 OPM_USER_USER 
WHERE USER_NAME = BINARY 'zhuyajun';

图片说明
再说明一下,这里看到的key_len是302,因为我的表里有302条数据和zhuyajun类似,可以看出的是这个索引查询是搜索到了这302条数据,最后再用binary对这302条数据中zhuyajun这条数据做判断
分析SQL执行计划
1.查询执行计划

    explain + SQL语句
    explain select * from tb;

结果

           id: 1 -- 编号
  select_type: SIMPLE -- 查询类型
        table: tb -- 表
         type: system -- 类型
possible_keys: NULL  -- 预测用的到的索引
          key: NULL -- 实际使用的索引
      key_len: NULL -- 实际使用的索引长度
          ref: NULL -- 表之间的引用
         rows: 0 -- 通过索引查询到的数据量
        Extra: const row not found --额外信息