您好,登錄后才能下訂單哦!
小編給大家分享一下MySQL索引怎么使用,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
一. 慢查詢日志
二. 查詢分析器——explain
三. 索引的基本使用
四. 復合索引
五. 覆蓋索引
//查看是否開啟慢查詢日志 mysql> show variables like '%slow%';//臨時開啟慢查詢日志 mysql> set global slow_query_log=ON;//查看是否開啟慢查詢日志 mysql> show variables like '%slow%';
//查詢超過多少時間就可以記錄,上面是如果超過10秒就要記錄 mysql> show variables like '%long%';//改成一秒,如果超過一秒就寫到慢日志里面去(一般一秒是最好的)mysql> set long_query_time=1;//查看日記存儲方式,默認FILE mysql> show variables like '%log_output%';// 慢查詢日志文件所在位置 mysql> show variables like '%datadir%';
//響應時間是3秒,超過了原先設定的一秒 mysql> select sleep(3);
我們去文件夾里面查看時發現它已經被存入慢查詢日記里面
這部分寫明了如何通過慢日志找出比較慢的SQL,后面部分要說為什么慢,如何能更快一點。
作用:通過這個可以知道查看sql慢在哪里,需要朝那些方面優化
列:我們創建一個employee數據表
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');
//通過explain解讀他,后面加一個\G便于閱讀 mysql> explain select * from employee where name='柳峰'\G;//掃描快捷 mysql> explain select * from employee where id=13\G;
效果:如下圖,可以看之前為什么那么慢,需要四秒響應時間
mysql> show index from employee\G;//主鍵會默認建一個id索引
創建索引 效率提升
//查詢分析 mysql> explain select * from employee where name='柳峰';//創建普通索引 mysql> create index idx_name on employee(name);
//刪除 mysql> drop index idx_name on employee;
老師 事列:
如過用like檢索,效率還是不變,所以要看你怎么用
//查的時候可以看到一個主鍵索引 mysql> show index from employee\G;
目前是all全局掃描
select * from employee where name ='柳峰';//查詢分析 explain select * from employee where name ='柳峰'\G;
創建索引
//創建索引 create index idx_name_salary_dept on employee(name,salary,dept);//查詢分析 explain select * from employee where name ='柳峰'\G;
驗證有name就能索引
// 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;
沒有name就不能使用索引
mysql> explain select * from employee where salary=8800;mysql> explain select * from employee where dept='部門A';
按照上面步驟,我們可以看到四個索引,第一個是主鍵索引,后面是復合索引name_salary_dept
mysql> show index from employee;
如何觸發
我們用id作為查詢數據
mysql> select * from employee;mysql> select * from employee where id =11;
只查id
mysql> explain select id from employee employee where id=11\G;mysql> explain select id from employee\G;
//查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索引怎么使用有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。