共计 561 个字符,预计需要花费 2 分钟才能阅读完成。
官方文档
参考文档地址 [优化 SELECT 语句]
1、优化需要了解的知识
在 phpmyadmin 查看上篇建表结构,索引情况:
操作 | 键名 | 类型 | 唯一 | 紧凑 | 字段 | 基数 | 排序规则 | 空 | 注释 |
---|---|---|---|---|---|---|---|---|---|
编辑 删除 | PRIMARY | BTREE | 是 | 否 | id | 0 | A | 否 | |
编辑 删除 | index_user_id | BTREE | 否 | 否 | user_id | 0 | A | 否 | 用户 ID 哈希索引 |
a. 索引类型
PRIMARY、INDEX(普通索引)、UNIQUE(唯一性索引)、FULLTEXT(全文索引);
外键索引、合并索引 / 组合索引
b. 索引方法
BTREE(默认)、HASH
参考《Mysql 目前主要的几种索引类型》
c. 创建索引的时机
在 SQL 中存在 <,<=,=,>,>=,BETWEEN,IN,以及 LIKE 时才会使用索引。
2、SELECT 语句优化
a.WHERE 子句优化
- 使用索引树(默认 BTREE)
- 删除不必要的括号 –> 恒定折叠 –> 恒定条件去除
- HAVINGWHERE 如果不使用 GROUP BY 或聚合函数(COUNT(),MIN() 等等),则合并
— 如果存在 ORDER BY 子句和不同的 GROUP BY 子句,或者如果 ORDER BY 或者 GROUP BY 包含连接队列中第一个表以外的表中的列,则会创建临时表。
— 如果使用 SQL_SMALL_RESULT 修饰符,MySQL 使用内存临时表。
b、范围优化
- 单部分索引
删除不能用于范围扫语法块 –> 折叠条件
正文完