解析Mysql执行语句并优化

解析Mysql执行语句并优化


1、分析执行语句

desc SELECT 
COUNT(1) as loginInvestNum 
FROM YQ_LOGIN_INVESTMENT INNER JOIN YQ_Investment ON YQ_LOGIN_INVESTMENT.AUTHORID = YQ_Investment.AUTHORID 
WHERE 
YQ_LOGIN_INVESTMENT.DATE BETWEEN 
'2016-12-13 00:00:00' 
AND 
'2016-12-13 23:59:59';


没优化前,全表扫描470万。

+----+-------------+---------------------+------+---------------+------+---------+------+---------+--------------------------------+
| id | select_type | table               | type | possible_keys | key  | key_len | ref  | rows    | Extra                          |
+----+-------------+---------------------+------+---------------+------+---------+------+---------+--------------------------------+
|  1 | SIMPLE      | YQ_Investment       | ALL  | NULL          | NULL | NULL    | NULL |  211384 |                                |
|  1 | SIMPLE      | YQ_LOGIN_INVESTMENT | ALL  | NULL          | NULL | NULL    | NULL | 4704015 | Using where; Using join buffer |
+----+-------------+---------------------+------+---------------+------+---------+------+---------+--------------------------------+

470万join21万没有索引,15分钟也出不来


2、按需创建索引

create index idx_date_authorid on YQ_LOGIN_INVESTMENT(date,AUTHORID);
创建复合索引


create index idx_AUTHORID on YQ_Investment(AUTHORID);
创建普通索引

查看索引

show index from YQ_LOGIN_INVESTMENT;

查看字段

show columns from  YQ_LOGIN_INVESTMENT;

如下:

+---------------------+------------+-------------------+--------------+------------------------+-----------+-------------+----------+--------+------+------------+---------+
| Table               | Non_unique | Key_name          | Seq_in_index | Column_name            | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+---------------------+------------+-------------------+--------------+------------------------+-----------+-------------+----------+--------+------+------------+---------+
| YQ_LOGIN_INVESTMENT |          0 | PRIMARY           |            1 | PK_YQ_LOGIN_INVESTMENT | A         |     4704015 |     NULL | NULL   |      | BTREE      |         |
| YQ_LOGIN_INVESTMENT |          1 | idx_date_authorid |            1 | DATE                   | A         |          18 |     NULL | NULL   |      | BTREE      |         |
| YQ_LOGIN_INVESTMENT |          1 | idx_date_authorid |            2 | AUTHORID               | A         |     4704015 |     NULL | NULL   |      | BTREE      |         |
+---------------------+------------+-------------------+--------------+------------------------+-----------+-------------+----------+--------+------+------------+---------+


分析执行语句优化后,权扫描172610行。

+----+-------------+---------------------+-------+-------------------+-------------------+---------+----------------------------------+--------+--------------------------+
| id | select_type | table               | type  | possible_keys     | key               | key_len | ref                              | rows   | Extra                    |
+----+-------------+---------------------+-------+-------------------+-------------------+---------+----------------------------------+--------+--------------------------+
|  1 | SIMPLE      | YQ_LOGIN_INVESTMENT | range | idx_date_authorid | idx_date_authorid | 4       | NULL                             | 172610 | Using where; Using index |
|  1 | SIMPLE      | YQ_Investment       | ref   | idx_AUTHORID      | idx_AUTHORID      | 122     | nlp.YQ_LOGIN_INVESTMENT.AUTHORID |      1 | Using where; Using index |
+----+-------------+---------------------+-------+-------------------+-------------------+---------+----------------------------------+--------+--------------------------+


3、总结:

关系库的查询,创建合适的索引非常重要!




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值