MYSQL进阶--索引

MYSQL进阶--索引

img
img

存储引擎

简介

  • 创建表时,指定存储引擎
    CREATE TABLE 表名( 字段1 字段1类型[COMMENT 字段1注释] 字段n 字段n类型 [COMMENT 字段n注释] ); ENGINE =INNODB[ COMMENT 表注释];
  • 查看当前数据库支持的存储引擎
    SHOW ENGINES ;

特点

img

InnoDB

img
文件对应的控件文件在MYSQL\MYSQLserver8.0\data文件夹内
img

MyISAM

img

选择

img

索引

索引结构

img
img

BTree

img
btree视频演示

B+tree

img
MYSQL优化了一下
img

hash

img
img

索引分类

img
img
img
二级索引查到数据再通过聚集索引继续查询,这个叫回表查询

索引语法

  • 创建索引
    CREATE[UNIOUE]FULLTEXT INDEX index name ON table name (index col name,... ) ;
  • 显示索引
    SHOW INDEX FROM table name ;
  • 删除索引
    DROP INDEX index name ON table name ;

案例:img

性能分析

sql执行频率

img
img

慢查询日志

img

show profiles

慢查询日志只能查阅超过设定时间的命令,而不是查询所有
img
img

explain

要看sql语句的性能主要看这个
img
img
img

使用规则

验证索引

img

最左前缀法则

img
img
也就是说必须包含最左列,跳过中间部分,则会部分失效,并且这个语句之间的顺序没有关系,只是必须存在就行
img

索引失效

索引列运算

img

字符串不加引号

img

模糊查询

img

or连接条件

img

数据分布影响

如果MySQL评估使用索引比全表更慢,则不使用索引。
img

SQL提示

SQL提示,是优化数据库的一个重要手段,简单来说,就是在SQL语句中加入一些人为的提示来达到优化操作的目的。
比如一个字段他创立了两个索引,而数据自动选择的那个索引不符合你的要求,那么你就可以强制要求数据库使用某个索引

  • use index (有点建议的意思)
    explain select* from tb user use index(idx user pro) where profession = '软件工程';
  • ignore index
    explain select* from tb user ignore index(idx user pro) where profession = '软件工程';
  • force index (强制的意思)
    explain select* from tb userforce indexidx user pro) where profession = '软件工程';

覆盖索引&回表查询

img
img
所以尽量避免select'*'因为很容易回表查询

前缀索引

img
img
img

索引设计原则

img

posted @   NoAcalculia  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示