全栈须知3优化SQL语句

26次阅读

共计 561 个字符,预计需要花费 2 分钟才能阅读完成。

官方文档

参考文档地址 [优化 SELECT 语句]

1、优化需要了解的知识

在 phpmyadmin 查看上篇建表结构,索引情况:

操作 键名 类型 唯一 紧凑 字段 基数 排序规则 注释
编辑 删除 PRIMARYBTREEid0A
编辑 删除 index_user_idBTREEuser_id0A 用户 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、范围优化

  • 单部分索引

删除不能用于范围扫语法块 –> 折叠条件

正文完
 0