MySQL之优化练习

版权声明:技术分享,转载附上笔者链接即可 https://blog.csdn.net/lwqBrell/article/details/88373267

【1】使用EXPLAIN语句来分析一个查询语句

EXPLAIN SELECT * FROM fruits;

【2】下面是查询语句中不使用索引和使用索引的对比。

EXPLAIN SELECT * FROM fruits WHERE f_name='apple';  /*分析未使用索引时的查询情况*/
CREATE INDEX index_name ON fruits(f_name);          /*创建索引*/
EXPLAIN SELECT * FROM fruits WHERE f_name='apple';  /*分析使用索引时的查询情况*/

【3】查询语句中使用LIKE关键字,并且匹配的字符串中含有‘%’符,EXPLAIN语句执行如下:

EXPLAIN SELECT * FROM fruits WHERE f_name like '%x';
EXPLAIN SELECT * FROM fruits WHERE f_name like 'x%';

【4】本例在表fruits中f_id、f_price字段创建多列索引,验证多列索引的使用情况。

CREATE INDEX index_id_price ON fruits(f_id, f_price);
EXPLAIN SELECT * FROM fruits WHERE f_id='l2';
EXPLAIN SELECT * FROM fruits WHERE f_price=5.2;

【5】查询语句使用OR关键字的情况:
 

EXPLAIN SELECT * FROM fruits WHERE f_name='apple' or s_id=101 \G;
EXPLAIN SELECT * FROM fruits WHERE f_name='apple' or f_id='l2' \G;

【6】下面的会员表(members)主要用来存储会员登录认证信息,
 

CREATE TABLE members (
  Id int(11) NOT NULL AUTO_INCREMENT,
  username varchar(255) DEFAULT NULL ,
  password varchar(255) DEFAULT NULL ,
  last_login_time datetime DEFAULT NULL ,
  last_login_ip varchar(255) DEFAULT NULL ,
  PRIMARY KEY (Id)
) ;


CREATE TABLE members_detail (
  member_id int(11) NOT NULL DEFAULT 0,
  address varchar(255) DEFAULT NULL ,
  telephone varchar(16) DEFAULT NULL ,
  description text
) ;

SELECT * FROM members LEFT JOIN members_detail ON members.id=members_detail.member_id

【7】会员信息表和会员组信息表如下:

CREATE TABLE vip(
  Id int(11) NOT NULL AUTO_INCREMENT,
  username varchar(255) DEFAULT NULL,
  password varchar(255) DEFAULT NULL,
  groupId INT(11) DEFAULT 0,
  PRIMARY KEY (Id)
) ;


CREATE TABLE vip_group (
  Id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(255) DEFAULT NULL,
  remark varchar(255) DEFAULT NULL,
  PRIMARY KEY (Id)
) ;

CREATE TABLE temp_vip (
  Id int(11) NOT NULL AUTO_INCREMENT,
  user_name varchar(255) DEFAULT NULL,
  group_name varchar(255) DEFAULT NULL,
  group_remark varchar(255) DEFAULT NULL,
  PRIMARY KEY (Id)
);

INSERT INTO temp_vip(user_name, group_name, group_remark)
SELECT v.username,g.name,g.remark 
FROM vip as v ,vip_group as g
WHERE v.groupId=g.Id;


【8】使用ANALYZE TABLE来分析message表,执行的语句及结果如下:

ANALYZE TABLE fruits;

注:习题为笔者平时练习所收藏,如有冒犯,请联系笔者删除!
 

猜你喜欢

转载自blog.csdn.net/lwqBrell/article/details/88373267
今日推荐