Mysql优化

一、存储引擎

1.查看所有引擎

SHOW ENGINES;

2.查看默认存储引擎

show VARIABLES LIKE '%STORAGE_engine%';

3.MyISAM和InnoDB

对比项

MyISAM

InnoDB

主外键

不支持

支持

事务

不支持

支持

行表锁

表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作

行锁,操作时只锁某一行,不对其他行有影响,适合高并发的操作

缓存

只缓存索引,不缓存真实数据

不仅缓存索引还要缓存真实数据,对内存的要求较高,而且内存的大小对其性能有决定性的影响

表空间

关注点

性能

事务

默认安装

YES

YES

二、SQL执行加载顺序

From left_table

on join_condition

join right_table

where where_condition

group by group_condition

having having_condition

select

distinct select_list

order by orderBy_condtion

limit limit_num

三、索引

1.定义

索引是帮助Mysql高效获取数据的数据结构。——>本质:数据结构。

其目的在于提高查询效率,可以类比于字典,可以简单理解为排好序的快速查找数据结构。

数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引。

通常说的索引如果没有特别指明,说的都是B树(多路搜索树,并不一定是二叉的)结构组织的索引。其中聚集索引、次要索引、覆盖索引、复合索引、前缀索引、唯一索引默认都是使用B+树索引,统称索引。当然,除了B+树这种类型的索引之外,还有哈希索引等

索引会影响到查找和排序

一般来说索引也很大,不可能全部存储在内存中,因此索引往往以索引文件的方式存储在磁盘上。

2.特点

优点:提高数据检索的效率,降低了数据库的IO成本。

​ 通过索引对数据进行排序,降低数据排序的成本,降低了CPU的消耗。

缺点:实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引也是占用空间的。

​ 虽然其大大调高了查询速度,同时却会降低更新表的速度。因为更新表时不仅要保存数据,还要保存一下 索引文件每次更新添加了索引列的字段,都会调整因为更新所带来的键值变化后的索引信息。

​ 索引只是提高效率的一个因素,如果你的数据库拥有大量的表,就需要花时间研究建立最优秀的索引,或 优化查询。

3.分类

单值索引

一个索引只包含单个列,一个表可以有多个单值索引。

唯一索引

索引列的值必须唯一,但允许有空值

复合索引

一个索引包含了多个列

4.基本语法

创建:UNIQUE是唯一索引, columnname只有一个是单值索引,有多个为复合索引

CREATE [UNIQUE] INDEX indexname on tablename(columnname1, columnname2...)

or

ALERT tablename add [UNIQUE] INDEX [indexname] on (columnname1, columnname2...)

删除:

DROP INDEX [indexname] on tablename

查看

SHOW INDEX FROM tablename

5.适合建立索引的情况

主键自动建立唯一索引

频繁作为查询条件的字段应该创建索引

查询中与其他表关联的字段,外键关系建立索引

查询中排序的字段,排序字段若通过索引去访问,将大大提高排序速度

单键/组合索引的选择问题(高并发适合创建组合索引)

查询中统计或分组的字段

6.不适合创建索引的情况

频繁更新的字段

where条件里用不到的字段

表记录太少

数据重复且分布平均的表字段,因此应该只为最经常查询和最经常排序的数据建立索引

索引的选择性=不同的数目/总数目

mysql优化教程_Mysql优化一相关推荐

  1. mysql延时优化教程_Mysql优化之延迟索引和分页优化_MySQL

    什么是延迟索引?使用索引查询出来数据,之后把查询结果和同一张表中数据进行连接查询,进而提高查询速度! 分页是一个很常见功能,select ** from tableName limit ($page ...

  2. mysql优化篇_MySQL优化篇-查询优化

    可以参考一下官方文档中的解释. 7. 优化 7.1. 优化概述 7.1.1. MySQL设计局限与折衷 7.1.2. 为可移植性设计应用程序 7.1.3. 我们已将MySQL用在何处? 7.1.4. ...

  3. 对mysql优化关注_MySQL优化看这篇就对了

    我们在面试的时候经常被问到你如何对数据库优化?动不动就分库分表,但是实际上有几个有分库分表的经验呢?下面我们将介绍优化数据库的各个阶段. 一.SQL语句优化 sql语句的优化是我们优化数据库的第一个阶 ...

  4. mysql 热块_mysql 优化

    数据库层面:应用系统层面优化SQL优化 SQL优化一般通过分析慢查询日志来抓取长事务高消耗的sql,通过结合具体业务,对sql逻辑进行分析and精简,or重写sql.通过配置slow_query_lo ...

  5. mysql优化方法_mysql优化方案总结

    u       Mysql数据库的优化技术 对mysql优化时一个综合性的技术,主要包括 a: 表的设计合理化(符合3NF) b: 添加适当索引(index) [四种: 普通索引.主键索引.唯一索引u ...

  6. mysql优化要点_MySQL优化技巧总结

    MySQL优化的几个大方向 ① 硬件优化 ② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行参数调整 ③ SQL语句方面的优化 ④ 表方面的优化 硬件优化 cpu,内存,硬盘 ...

  7. mysql 全文检索 教程_MySQL:详细说明MySQL全文检索图文详细教程

    软件安装:装机软件必备包 本站电脑知识提供电脑入门知识,计算机基础知识,计算机网络应用基础知识,电脑配置知识,电脑故障排除和电脑常识大全,帮助您更好的学习电脑!不为别的,只因有共同的爱好,为中国互联网 ...

  8. mysql性能优化教程_mysql性能优化教程

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  9. mysql数据库优化教程_mysql数据库索引优化学习教程

    MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是 ...

最新文章

  1. 域名管理系统 二级域名_域名系统简介
  2. 分享一个自己用的Objective-C的Http接连类
  3. Node.js 切近实战(八) 之Excel在线(文件权限)
  4. C++学习笔记3[条件判断语句]
  5. SpringBoot集成thymeleaf增删改查示例
  6. 图像目标分割_2 FCN(Fully Convolutional Networks for Semantic Segmentation)
  7. ecshop 多语言版 fckeditor,支持中文英文韩文等众多语言
  8. html与js简单小游戏,使用js写了一个特别简单的小游戏
  9. SQLite查询优化(转)
  10. jsonp跨域请求用法
  11. Deep Stream Ai落地--初体验
  12. 鲸探APP处罚60余位转售数字藏品用户 | 产业区块链发展周报
  13. python语言读后感_《利用Python进行数据分析》读书笔记
  14. 2977 二叉堆练习1
  15. Yii2中场景(scenario)和验证规则(rule) Yii2中的场景(scenario)和验证规则(rule)详解
  16. Altair Activate 2021.1 x64
  17. Kepware读取研华ADAM4017总结
  18. B2型水面线计算(含python代码)
  19. python爬虫:利用多线程爬虫爬取下载进击的巨人图片
  20. 微积分——极值定理的证明

热门文章

  1. 【笔试/面试】排列组合与概率计算(三)
  2. Java 基础 —— Character 与 String
  3. 如何通过父类引用“调用”子类所独有的方法
  4. java 堆_Java 对象都是在堆上分配内存吗?
  5. 电脑win7语音怎么测试软件,win7话筒怎么测试 win7话筒测试方法【图文】
  6. 零基础学python大概要多久-怎么自学python,大概要多久?
  7. python编程入门教学-史上最全Python编程基础入门教程
  8. python是什么专业-python主要学什么?
  9. 连续语音识别,continuous speech recognition,音标,读音,翻译,英文例句,英语词典
  10. Element UI el-table 表格多选的使用