MSQ高级 索引,事务,锁

一、索引 什么是索引?为什么要有索引? 索引相当于字典的音序表,如果要查某个字,如果不使用音序表,则需要从几百页中逐页去查。索引在 MySQL 中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。索引优化应该是对查询性能优化最有效的手段了。善用索引能够轻易将查询性能提高好几个数量级。
1.在创建表时创建索引,代码如下所示:

2.查看索引
创建索引后可以使用下面语句查看索引。

3.删除表中索引,代码如下所示:

4.通过 EXPLAIN 分析 SQL 是否使用到索引

索引的使用规则
1:索引分类
常见的索引类型有:主键索引、唯一索引、普通索引、全文索引、组合索引。
 主键索引:即主索引,根据主键 pkclolum(length)建立索引,不允许重复,不允许空值;
唯一索引:用来建立索引的列的值必须是唯一的,允许空值;
普通索引:用表中的普通列构建的索引,没有任何限制;
全文索引:用大文本对象的列构建的索引;
组合索引:用多个列组合构建的索引,这多个列中的值不允许有空值。
2:适合建立索引的情况
主键自动建立唯一索引;
经常作为查询条件在 WHERE 或者 ORDER BY 语句中出现的列要建立索引;
作为排序的列要建立索引;
查询中与其他表关联的字段,外键关系建立索引;
高并发条件下倾向组合索引;
用于聚合函数的列可以建立索引,例如使用了 max(column_1)或者 count(column_1)时的 column_1 就需
要建立索引。
3:不适合建立索引的情况
 经常增删改的列不要建立索引;
 有大量重复的列不建立索引;
 表记录太少不要建立索引。只有当数据库里已经有了足够多的测试数据时,它的性能测试结果才有实际
参考价值。如果在测试数据库里只有几百条数据记录,它们往往在执行完第一条查询命令之后就被全部
加载到内存里,这将使后续的查询命令都执行得非常快–不管有没有使用索引。只有当数据库里的记录
超过了 1000 条、数据总量也超过了 MySQL 服务器上的内存总量时,数据库的性能测试结果才有意义。
4:索引失效的情况
在组合索引中不能有列的值为 NULL,如果有,那么这一列对组合索引就是无效的;
在一个 SELECT 语句中,索引只能使用一次,如果在 WHERE 中使用了,那么在 ORDER BY 中就不要用了;
LIKE 操作中,’%aaa%'不会使用索引,也就是索引会失效,但是‘aaa%’可以使用索引;
在索引的列上使用表达式或者函数会使索引失效;
在查询条件中使用不等于,包括<符号、>符号和!=会导致索引失效;
在查询条件中使用 IS NULL 或者 IS NOT NULL 会导致索引失效;
字符串不加单引号会导致索引失效;
在查询条件中使用 OR 连接多个条件会导致索引失效,除非 OR 链接的每个条件都加上索引;
如果排序的字段使用了索引,那么 select 的字段也要是索引字段,否则索引失效;
尽量不要包括多列排序,如果一定要,最好为这队列构建组合索引。

MSQ高级 索引,事务,锁相关推荐

  1. MyISAM 和InnoDB 的区别.(存储,索引, 事务, 锁)

    MyISAM类型的表强调的是性能,但是不支持事务.及外部键等高级功能. MySQL默认采用的是MyISAM. MyISAM不支持事务,而InnoDB支持.InnoDB的AUTOCOMMIT默认是打开的 ...

  2. MySQL 数据存储和优化------MySQL架构原理 ---- (架构---索引---事务---锁---集群---性能---分库分表---实战---运维)持续更新

    Mysql架构体系全系列文章主目录(进不去说明还没写完)https://blog.csdn.net/grd_java/article/details/123033016 本文只是整个系列笔记的第一章: ...

  3. MySQL之事务 索引 锁_MySql 知识点之事务、索引、锁原理与用法解析

    本文实例讲述了MySql 知识点之事务.索引.锁原理与用法.分享给大家供大家参考,具体如下: 事务 事务概念 事务就是一组原子性的SQL查询,或者说一个独立的工作单元.如果数据库引擎执行一组操作语句, ...

  4. 5.15 mysql 数据库(数据库/表操作/索引/pymysql/备份与恢复/事务/锁) 学习笔记

    文章目录 1 初始数据库 1)数据库 2)mysql 3)和用户权限相关的 4)基本操作 2 表操作 1)存储引擎 2)表和数据的一些基本操作 3)mysql中的数据类型 4)表的完整性约束 5)修改 ...

  5. 【MySQL高级】Mysql锁问题

    5. Mysql锁问题 5.1 锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制(避免争抢). 在数据库中,除传统的计算资源(如 CPU.RAM.I/O 等)的争用以外,数据也是一种供许多用 ...

  6. MySQL - 无索引行锁升级为表锁

    文章目录 生猛干货 无索引行锁升级为表锁演示 表结构 索引信息 操作演示 结论 搞定MySQL 生猛干货 带你搞定MySQL实战,轻松对应海量业务处理及高并发需求,从容应对大场面试 无索引行锁升级为表 ...

  7. MySQL-索引优化篇(3)_利用索引优化锁

    文章目录 生猛干货 官方文档 利用索引优化锁 为什么索引能优化锁 演示 无索引的情况 (获取不同的数据 发生了阻塞) 有索引的情况 (获取不同的数据 未阻塞) 搞定MySQL 生猛干货 带你搞定MyS ...

  8. 主键和索引哪个快_数据库两大神器【索引和锁】

    前言 只有光头才能变强 索引和锁在数据库中可以说是非常重要的知识点了,在面试中也会经常会被问到的. 本文力求简单讲清每个知识点,希望大家看完能有所收获 声明:如果没有说明具体的数据库和存储引擎,默认指 ...

  9. mysql suoyin 和锁_Mysql索引与锁

    Mysql索引与锁 Mysql索引与锁 本文以Mysql5.7为例测试. 1:mysql索引方法 Mysql的索引方法分为btree索引和hash索引. hash索引:是通过hash计算后比较,所以只 ...

最新文章

  1. Android KTV
  2. dmidecode 命令详解(获取硬件信息)
  3. ucl 数据压缩开源库 简介
  4. php+读取配置里的值,ThinkPHP 读取配置信息与动态配置(C方法)
  5. php 数组重新打乱_PHP 将数组打乱 shuffle函数的用法及简单实例
  6. 基于函数计算的 Serverless AI 推理
  7. 【flume】flume案例集锦
  8. android 加载so 与内存的关系,Android动态调试so之dump内存数据
  9. JavaScript中sort方法的使用及原理详解
  10. C语言内存泄漏问题检视方法
  11. 思科单臂路由最详细教程
  12. expandable长点击的实现
  13. python pandas 数据透视表_python 用pandas实现数据透视表功能
  14. 综述论文要写英文摘要吗_攻略|一些小论文撰写的建议
  15. 基于python/scipy学习概率统计(2):伯努利分布(Bernoulli Distribution)
  16. html让屏幕可以上下拉动,想用JQ实现一个按住一个图标,div可以上下拖动的效果,请给个详细的JQ和HTML代码,谢谢了...
  17. 101128 ~ 101204
  18.  定义一个变量,是一个三位数,求各个位数的和
  19. TSP问题—Hopfield神经网络算法实现
  20. “新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛----G-CSL的训练计划

热门文章

  1. 竞速大作-极品飞车14:热力追踪-测试中
  2. 暴雪娱乐推首个免费游戏 支持iPad平板电脑
  3. 学习记录:FSMC—扩展外部SRAM
  4. JavaScript 编程精解 中文第三版 一、值,类型和运算符
  5. spring为什么是接口注入而不是实现类注入(持续更新)
  6. 施一公确认,西湖大学2022年首次招收本科生
  7. 2020年7月11日
  8. select中的两个属性——selectedIndex、selectedOptions
  9. 付出过就不要后悔,爱情里没有绝对地对与错,输与赢
  10. matlab怎么把音频变成信号_如何使用 MATLAB 实现音频信号处理、实验仿真?