索引和引擎小结

一,索引

1,索引作用:

(1)加快查询速度

(2)唯一性

(3)文本搜索,MyISAM索引

2,索引缺点:

(1)虽然增加查询速度,但是降低增删改的速度,增删改操作时候需要修改索引。

(2)占用磁盘空间。

3,索引分类 :

主键索引primary(id)

唯一索引unique(name)

普通索引index(age)

4,

主键和唯一索引有单个索引和组合索引。

普通索引有单列索引和多列索引,多列索引遵循最左前缀原则。

5,

只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁。

6,什么情况下使用索引

在WHERE和JOIN中出现的列需要建立索引,但也不完全如此,因为MySQL只对<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE才会使用索引。以下情况不会使用索引:

(1)含有NULL值的列

(2)like “%aaa%”

(3)列上进行运算,where YEAR(adddate)<2007

(4)使用NOT IN和<>操作符

二,存储引擎

(1)MyISAM使用非聚簇索引方式存储,索引和数据分离的,适合读写。支持表级锁。

(2)InnoDB使用聚簇索引方式存储,索引和数据一起,适合频繁更新,支持事务、外键、表级锁和行级锁。

(3)清空整张表时候,InnoDB是一行一行删除,效率非常慢,MyISAM则会重建表,效率高。

(4)MyISAM保存表的行数,InnoDB不保存,select count(*)时候MyISAM效率更高。

(5)只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁。

时间: 2024-10-05 09:08:50

索引和引擎小结的相关文章

lucene索引文件大小优化小结

随着业务快速发展,基于lucene的索引文件zip压缩后也接近了GB量级,而保持索引文件大小为一个可以接受的范围非常有必要,不仅可以提高索引传输.读取速度,还能提高索引cache效率(lucene打开索引文件的时候往往会进行缓存,比如MMapDirectory通过内存映射方式进行缓存). 如何降低我们的索引文件大小呢?本文进行了一些尝试,下文将一一介绍. 1 数值数据类型索引优化 1.1 数值类型索引问题 lucene本质上是一个全文检索引擎而非传统的数据库系统,它基于倒排索引,非常适合处理文本

MySQL索引、引擎

一.索引 索引是一种存储引擎能快速找到记录的数据结构. 索引如果包含多个列,列的顺序就十分重要,MySQL只能高效使用最左前缀列.创建包含两个列的索引和创建两个列的单独索引,效果也是不一样的. 索引是存储引擎层面实现的,不是服务器层面. 索引的类型 B-Tree B+Tree B+Tree相对于B-Tree的几点不同: 非叶子节点只存储键值信息. 所有叶子节点之间都有一个链指针. 数据记录都存放在叶子节点中. 当创建了一个包含last_name.first_name.date的索引,会对下列类型

between and 前缀索引执行计划小结

假如说联合索引前缀部分使用了 between and 情况下(包括大于等于,小于等于),执行计划会非常差,因为他不知道你一共有多少行. 复合索引第一个列一般来说必须要用等号. 原文地址:https://www.cnblogs.com/liang545621/p/8278063.html

数据库引擎小结

定义: 用于创建数据库表的生成规则代码. 种类与区别: InnoDB:支持事务,不支持全文搜索 MEMORY:数据存储在内存中,速度快,其他和MyISAM一样 MyISAM:支持事务,不支持全文本搜索 注意: 可以同一个数据库里面多个表进行引擎混用,但是外键 不能跨引擎. PS:定义是个人的总结. 原文地址:https://www.cnblogs.com/Ugly-bear/p/9434250.html

MySQL存储引擎以及索引原理

一.MySQL存储引擎:MySQL将数据用各种不同的技术存储在文件中,这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.这些不同的技术以及配套的相关功能在 mysql中被称作存储引擎(也称作表类型).建表时,选择合适的存储引擎很重要,如果到后期再更换将会很麻烦.存储引擎是基于表的,而非数据库. 个人理解:存储引擎是某张表存储数据.如何为存储的数据建立索引和更新.查询数据库等技术的实现方法集合及约束.常见的存储引擎如下图: 这里,先总结常用的三种存储

Mysql梳理-关于索引/引擎与锁

前言 最近突发新型肺炎,本来只有七天的春节假期也因为各种封锁延长到了正月十五,在家实在闲的蛋疼便重新研究了一下Mysql数据库的相关知识,特此总结梳理一下.本文主要围绕以下几点进行: 1.Mysql的索引与引擎 2.事务隔离级别 3.Mysql的九种锁 4.几点常用规范 一.Mysql的索引与引擎 Mysql最常用的引擎是InnoDB,但还有很多种其他类型的引擎,平时最常用来与它进行比对的是MyISAM. 1. Mysql是采用B+树作为索引存放的数据结构.B+树结构如下图所示.为什么采用这种类

MySQL-视图-触发器-事务-存储过程-函数-流程控制-索引与慢查询优化-06

目录 视图*** 什么是视图 为什么要用视图 如何生成视图 修改视图 --> 最好(千万)不要 关联表数据改动前 关联表数据改动之后 触发器 什么是触发器 触发条件 触发器语法结构 修改mysql的默认结束符(;) 触发器死循环 六个触发器的执行时机 新增前.新增后.删除前.删除后.更新前.更新后 NEW对象指代的就是当前记录(对象) 事务 ***** 什么是事务 事务的四大特性 ACID A:原子性 atomicity C:一致性 consistency I:隔离性 isolation D:持

事务与索引

事务 1. 事务的介绍 事务就是用户定义的一系列执行SQL语句的操作, 这些操作要么完全地执行,要么完全地都不执行, 它是一个不可分割的工作执行单元. 事务的使用场景: 在日常生活中,有时我们需要进行银行转账,这个银行转账操作背后就是需要执行多个SQL语句,假如这些SQL执行到一半突然停电了,那么就会导致这个功能只完成了一半,这种情况是不允许出现,要想解决这个问题就需要通过事务来完成. 2. 事务的四大特性 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolatio

【转】MySQL存储引擎中的MyISAM和InnoDB区别详解

转自:http://www.jb51.net/article/62457.htm MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然性能极佳,但却有一个缺点:不支持事务处理(transaction).不过,在这几年的发展下,MySQL也导入了InnoDB(另一种数据库引擎),以强化参考完整性与并发违规处理机制,后来就逐渐取代MyISAM. InnoDB,是MySQL的数据