关闭

MySQL:性能优化

119人阅读 评论(0) 收藏 举报
分类:
【例16.1】使用EXPLAIN语句来分析一个查询语句
EXPLAIN SELECT * FROM fruits;

【例16.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';  /*分析使用索引时的查询情况*/

【例16.3】查询语句中使用LIKE关键字,并且匹配的字符串中含有‘%’符,EXPLAIN语句执行如下:
EXPLAIN SELECT * FROM fruits WHERE f_name like '%x';
EXPLAIN SELECT * FROM fruits WHERE f_name like 'x%';

【例16.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;

【例16.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;

【例16.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

【例16.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;


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


综合案例

步骤1:分析查询语句,理解索引对查询速度的影响。
1.使用分析查询语句“SELECT * FROM fruits WHERE f_name='banana';”,执行的语句及执行结果如下:
EXPLAIN SELECT * FROM fruits WHERE f_name='banana';

2.使用分析查询语句“SELECT * FROM fruits WHERE f_name like '%na'”,执行的语句及执行结果如下:
EXPLAIN SELECT * FROM fruits WHERE f_name like '%na';

3.使用EXPLAIN分析查询语句下面执行“SELECT * FROM fruits WHERE f_name like 'ba%';”语句如下:
EXPLAIN SELECT * FROM message WHERE title like ' ba%';


步骤2:练习分析表、检查表、优化表。
1.使用ANALYZE TABLE语句分析fruits表,执行的语句及结果如下:
ANALYZE TABLE fruits;

2.使用CHECK TABLE语句检查表fruits,执行的语句及结果如下:
CHECK TABLE fruits;


0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:274488次
    • 积分:5436
    • 等级:
    • 排名:第4886名
    • 原创:193篇
    • 转载:483篇
    • 译文:0篇
    • 评论:183条
    最新评论