>  기사  >  데이터 베이스  >  MySQL 인덱스 사용을 소개하는 예

MySQL 인덱스 사용을 소개하는 예

coldplay.xixi
coldplay.xixi앞으로
2020-12-11 17:34:167971검색

mysql 튜토리얼열 예제에서는 MySQL 인덱스 사용을 설명합니다MySQL 인덱스 사용을 소개하는 예

관련 무료 학습 권장 사항: mysql tutorial(동영상)

MySQL 인덱스 사용 예제

    • 하나 . 느린 쿼리 로그
    • 2. 쿼리 분석기 - 설명
    • 3. 인덱스의 기본 사용법
    • 4. 복합 인덱스
    • 5. 포함 인덱스

1. 느린 쿼리 로그

//查看是否开启慢查询日志
mysql> show variables like '%slow%';//临时开启慢查询日志
mysql> set global slow_query_log=ON;//查看是否开启慢查询日志
mysql> show variables like '%slow%';

MySQL 인덱스 사용을 소개하는 예

//查询超过多少时间就可以记录,上面是如果超过10秒就要记录
mysql> show variables like '%long%';//改成一秒,如果超过一秒就写到慢日志里面去(一般一秒是最好的)mysql> set long_query_time=1;//查看日记存储方式,默认FILE
mysql> show variables like '%log_output%';// 慢查询日志文件所在位置
mysql> show variables like '%datadir%';

MySQL 인덱스 사용을 소개하는 예

//响应时间是3秒,超过了原先设定的一秒
mysql> select sleep(3);

MySQL 인덱스 사용을 소개하는 예
폴더를 확인해보니 느린 쿼리 로그에 저장되어 있는 것을 발견했습니다.

MySQL 인덱스 사용을 소개하는 예

이 부분에서는 느린 로그를 통해 느린 SQL을 찾는 방법을 설명합니다. 느린 이유와 속도를 높이는 방법을 알려주세요.

2. 쿼리 분석기 - explain

Function : 이를 통해 SQL이 느린 부분과 최적화가 필요한 부분을 알 수 있습니다

Column : 직원 데이터 테이블을 생성합니다

create table employee(
	id int not null auto_increment primary key,
	name varchar(30) comment '姓名',
	sex varchar(1) comment '性别',
	salary int comment '薪资(元)',
	dept varchar(30) comment '部门');insert into employee(name, sex, salary, dept) values('张三', '男', 5500, '部门A');insert into employee(name, sex, salary, dept) values('李洁', '女', 4500, '部门C');insert into employee(name, sex, salary, dept) values('李小梅', '女', 4200, '部门A');insert into employee(name, sex, salary, dept) values('欧阳辉', '男', 7500, '部门C');insert into employee(name, sex, salary, dept) values('李芳', '女', 8500, '部门A');insert into employee(name, sex, salary, dept) values('张江', '男', 6800, '部门A');insert into employee(name, sex, salary, dept) values('李四', '男', 12000, '部门B');insert into employee(name, sex, salary, dept) values('王五', '男', 3500, '部门B');insert into employee(name, sex, salary, dept) values('马小龙', '男', 6000, '部门A');insert into employee(name, sex, salary, dept) values('龙五', '男', 8000, '部门B');insert into employee(name, sex, salary, dept) values('冯小芳', '女', 10000, '部门C');insert into employee(name, sex, salary, dept) values('马小花', '女', 4000, '部门B');insert into employee(name, sex, salary, dept) values('柳峰', '男', 8800, '部门A');

MySQL 인덱스 사용을 소개하는 예

//通过explain解读他,后面加一个\G便于阅读
mysql> explain select * from employee where name='柳峰'\G;//扫描快捷
mysql> explain select * from employee where id=13\G;

MySQL 인덱스 사용을 소개하는 예

효과: 아래 그림과 같이 이전에는 응답 시간이 4초로 느려졌던 이유를 알 수 있습니다

MySQL 인덱스 사용을 소개하는 예

3. 인덱스의 기본 사용

mysql> show index from employee\G;//主键会默认建一个id索引

MySQL 인덱스 사용을 소개하는 예

인덱스 생성 효율성이 향상됩니다.

//查询分析
mysql> explain select * from employee where name='柳峰';//创建普通索引
mysql> create index idx_name on employee(name);

MySQL 인덱스 사용을 소개하는 예

//删除
mysql> drop index idx_name on employee;

MySQL 인덱스 사용을 소개하는 예
선생님 목록:
MySQL 인덱스 사용을 소개하는 예

검색처럼 사용해도 효율성은 그대로이므로 어떻게 사용하느냐에 따라 다릅니다

MySQL 인덱스 사용을 소개하는 예

4. 복합지수

//查的时候可以看到一个主键索引
mysql> show index from employee\G;

MySQL 인덱스 사용을 소개하는 예

현재는 모두 글로벌 스캔입니다

select * from employee where name ='柳峰';//查询分析
explain select * from employee where name ='柳峰'\G;

MySQL 인덱스 사용을 소개하는 예

인덱스 생성

//创建索引
create index idx_name_salary_dept on employee(name,salary,dept);//查询分析
explain select * from employee where name ='柳峰'\G;

MySQL 인덱스 사용을 소개하는 예

인덱스가

// name和salary
mysql> explain select * from employee where name ='柳峰' and salary=8800\G;//name和dept
mysql> explain select * from employee where name ='柳峰' and dept='部门A'\G;

MySQL 인덱스 사용을 소개하는 예

인덱스 이름 없이는 사용할 수 없습니다

mysql> explain select * from employee where  salary=8800;mysql> explain select * from employee where  dept='部门A';

MySQL 인덱스 사용을 소개하는 예

5. 인덱스 덮기

위 단계를 따르면 4개의 인덱스를 볼 수 있습니다. 첫 번째 인덱스는 기본 키 인덱스이고 그 다음은 복합 인덱스name_salary_dept

mysql> show index from employee;

MySQL 인덱스 사용을 소개하는 예
트리거 방법

ID를 다음과 같이 사용합니다. 데이터 조회

mysql> select * from employee;mysql> select * from employee where id =11;

MySQL 인덱스 사용을 소개하는 예

아이디만 확인

mysql> explain select id from employee  employee where id=11\G;mysql> explain select id from employee\G;

MySQL 인덱스 사용을 소개하는 예

//查name,salary
mysql> explain select name,salary from employee;//查name,salary,dept
mysql> explain select name,salary,dept from employee;//因为没有sxe条件,所以只能做全部扫描type为null
mysql> explain select name,sex,salary,dept from employee;

MySQL 인덱스 사용을 소개하는 예

위 내용은 MySQL 인덱스 사용을 소개하는 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제