码迷,mamicode.com
首页 > 数据库 > 详细

MySQL数据库优化_索引

时间:2018-08-15 17:43:02      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:update   select   into   possible   col   l数据库   建表   sql   全表扫描   

1.添加索引后减少查询需要的行数,提高查询性能

  (1) 建表

CREATE TABLE `site_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 自增ID号,
  `phone` varchar(15) NOT NULL COMMENT 手机号码,
  `token` varchar(50) DEFAULT NULL COMMENT 最近一次登录生成的令牌,用于登录验证,
  `status` tinyint(1) NOT NULL DEFAULT 0 COMMENT 用户活动状态 0:正常,1:锁定,
  `login_status` tinyint(1) NOT NULL DEFAULT 1 COMMENT 当前登录状态 1:在线,2:离线,
  `last_login_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 最近登录时间,
  `channel` tinyint(1) NOT NULL DEFAULT 1 COMMENT 注册来源 1:公众号,2:小程序,3:外部公众号,4:支付宝,5:Web,
  `remark` varchar(255) DEFAULT NULL COMMENT 备注,
  `signin_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 注册时间,
  `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间,
  `mallcode` varchar(11) DEFAULT NULL COMMENT 万象城code,
  PRIMARY KEY (`id`),
  KEY `index_phone` (`phone`)
) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8 COMMENT=微站点用户表;

  (2)插入数据

INSERT INTO `highperformance_mysql`.`site_user` (`id`, `phone`, `token`, `status`, `login_status`, `last_login_time`, `channel`, `remark`, `signin_time`, `update_time`, `mallcode`) VALUES (26, 15022271154, a3664fbfed754a2aa371cd2a3f3419f6, 0, 2, 2018-08-14 17:02:06, 5, NULL, 2018-07-20 15:34:32, 2018-08-14 15:07:17, 0202A003);
INSERT INTO `highperformance_mysql`.`site_user` (`id`, `phone`, `token`, `status`, `login_status`, `last_login_time`, `channel`, `remark`, `signin_time`, `update_time`, `mallcode`) VALUES (27, 16633343692, 7b6223251c9d4798ad4a56f19873cd82, 0, 1, 2018-08-15 09:32:49, 5, NULL, 2018-07-30 09:47:06, 2018-08-15 09:32:48, 0202A003);
INSERT INTO `highperformance_mysql`.`site_user` (`id`, `phone`, `token`, `status`, `login_status`, `last_login_time`, `channel`, `remark`, `signin_time`, `update_time`, `mallcode`) VALUES (29, 17600444462, ff4b2c4c331c47c0b320d1dbaa7abf49, 0, 1, 2018-08-13 18:30:11, 5, NULL, 2018-08-02 16:06:46, 2018-08-13 18:30:10, 0202A003);
INSERT INTO `highperformance_mysql`.`site_user` (`id`, `phone`, `token`, `status`, `login_status`, `last_login_time`, `channel`, `remark`, `signin_time`, `update_time`, `mallcode`) VALUES (36, 18755555159, c425ac1dbe354a43b56186a54cf624ac, 0, 1, 2018-08-07 17:48:40, 1, NULL, 2018-08-07 16:21:17, 2018-08-07 16:23:59, 0202A003);
INSERT INTO `highperformance_mysql`.`site_user` (`id`, `phone`, `token`, `status`, `login_status`, `last_login_time`, `channel`, `remark`, `signin_time`, `update_time`, `mallcode`) VALUES (37, 187666666158, 7a7fd66631bd486f8f9f255d206796af, 0, 1, 2018-07-13 16:48:47, 1, NULL, 2018-08-07 16:24:49, 2018-07-13 16:48:46, 0202A003);
INSERT INTO `highperformance_mysql`.`site_user` (`id`, `phone`, `token`, `status`, `login_status`, `last_login_time`, `channel`, `remark`, `signin_time`, `update_time`, `mallcode`) VALUES (38, 17777783642, 8e3c01fd6435471db7f28508713923c1, 0, 1, 2018-08-11 10:50:32, 5, NULL, 2018-08-11 10:50:23, NULL, NULL);

  (3)执行查询

EXPLAIN SELECT * FROM site_user WHERE token = a3664fbfed754a2aa371cd2a3f3419f6

  (4)分析查询结果,这次查询,要获取1行数据,但是要访问6行数据,执行的是全表扫描,如果表数据量变大的话,需要访问的数量会剧增,性能不高

+----+-------------+-----------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table     | type | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+-----------+------+---------------+------+---------+------+------+-------------+
|  1 | SIMPLE      | site_user | ALL  | NULL          | NULL | NULL    | NULL |    6 | Using where |
+----+-------------+-----------+------+---------------+------+---------+------+------+-------------+
1 row in set (0.00 sec)

  (5)添加索引

ALTER TABLE site_user ADD INDEX index_token (`token` ) 

  (6)再次执行查询

EXPLAIN SELECT * FROM site_user WHERE token = a3664fbfed754a2aa371cd2a3f3419f6

  (7)分析查询结果,这次查询,要获取1行数据,但是要访问1行数据

+----+-------------+-----------+------+---------------+-------------+---------+-------+------+-----------------------+
| id | select_type | table     | type | possible_keys | key         | key_len | ref   | rows | Extra                 |
+----+-------------+-----------+------+---------------+-------------+---------+-------+------+-----------------------+
|  1 | SIMPLE      | site_user | ref  | index_token   | index_token | 153     | const |    1 | Using index condition |
+----+-------------+-----------+------+---------------+-------------+---------+-------+------+-----------------------+
1 row in set (0.00 sec)

 

MySQL数据库优化_索引

标签:update   select   into   possible   col   l数据库   建表   sql   全表扫描   

原文地址:https://www.cnblogs.com/rocker-pg/p/9482697.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!