mysql索引的分析和优化
2022/7/7 2:21:41
本文主要是介绍mysql索引的分析和优化,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
准备建表语句
//创建数据库 CREATE DATABASE Mysql_Study;
但是在创建表的时候,对于int类型,会有int(2),int(4),int(11)这些类型选择
创建表 CREATE TABLE customer_message( customer_message_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键', customer_message_name VARCHAR(20) COMMENT '客户姓名', customer_message_num INT(4) COMMENT '信息查询次数' )
给表加上注释
ALTER TABLE customer_message COMMENT '客户信息'
修改表中字段的注释
alter table 表名 modify column 字段名 字段类型 comment '修改后的字段注释';
INSERT INTO customer_message(customer_message_name,customer_message_num)VALUE ('小白',1000), ('小红',2000), ('小六',2001), ('小黑',2002), ('小绿',2003)
sql语句分析
select_type字段解释
type表示存储引擎查询数据时使用的方式
key表示查询时真正使用到的索引,显示的是索引名称
rows表示查询结果需要扫描多少行,原则上是越少越好
key_len表示使用索引的字节数量,可以判断是否使用了组合索引
引入复合索引(组合索引)
组合索引创建sql
ALTER TABLE customer_message ADD INDEX(customer_message_name,customer_message_num)
EXPLAIN SELECT * FROM customer_message WHERE customer_message_name='小六' AND customer_message_num=2001
like查询和索引相关
先删除前期创建的组合索引
#删除customer_message表的customer_message_name索引 DROP INDEX customer_message_name ON customer_message #删除customer_message表的customer_message_num索引 DROP INDEX customer_message_num ON customer_message
重新创建索引
ALTER TABLE customer_message ADD INDEX(customer_message_name)
索引判断sql
EXPLAIN SELECT * FROM customer_message WHERE customer_message_name LIKE '白%'
EXPLAIN SELECT * FROM customer_message WHERE customer_message_name LIKE '%小'
EXPLAIN SELECT * FROM customer_message WHERE customer_message_name LIKE '%小%'
EXPLAIN SELECT * FROM customer_message WHERE customer_message_name LIKE '小%'
索引搜索的数据最好是不要每条记录都带有的关键字,不然依旧是全表扫描
新增数据
INSERT INTO customer_message(customer_message_name,customer_message_num)VALUE ('寂寞寂寞就好',3001), ('不爱代码的程序员',3002), ('同学两亿岁',3003), ('不起眼',3004), ('未知空间',3005)
EXPLAIN SELECT * FROM customer_message WHERE customer_message_name LIKE '寂寞%'
EXPLAIN SELECT * FROM customer_message WHERE customer_message_name LIKE '不%'
EXPLAIN SELECT * FROM customer_message WHERE customer_message_name LIKE '%就好'
mysql支持filesort和index两种方式的排序
如果我们Explain分析SQL,结果中Extra属性显示Using filesort,表示使用了filesort排序方式,需要优化。
EXPLAIN SELECT customer_message_id FROM customer_message ORDER BY customer_message_id
这篇关于mysql索引的分析和优化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南
- 2024-12-07MySQL慢查询入门:快速掌握性能优化技巧
- 2024-12-07MySQL入门:新手必读的简单教程
- 2024-12-07MySQL入门:从零开始学习MySQL数据库
- 2024-12-07MySQL索引入门:新手快速掌握MySQL索引技巧
- 2024-12-06BinLog学习:MySQL数据库BinLog入门教程
- 2024-12-06Binlog学习:MySQL数据库的日志管理入门教程