全栈须知3优化SQL语句

官方文档

参考文档地址 [优化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、范围优化

  • 单部分索引

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理