Mysql 索引概念及设计原则

键类型:

1. 主键

2. 唯一键

3. 外键

索引类型:

1. Hash索引

2. Ordered索引(BTREE/RTREE)

索引的创建:

1. 主键会创建两个索引:Hash索引和Ordered索引

2. 唯一键会创建两个索引:Hash索引和Ordered索引

3. 一般定义的索引只创建Ordered索引

主键和唯一键各个索引使用场景:

1. 当操作类型是=时,使用Hash索引

2. 当操作类型是范围时,使用Ordered索引

索引使用原则:

1. 基于主键的操作是最快的,需要充分利用主键

2. 对于主键和唯一键如果不需要范围操作,建议使用USING HASH限制主键和唯一键只创建Hash索引

3. 基于int类型的index比基于varchar类型的index速度要快

时间: 2024-11-17 00:41:58

Mysql 索引概念及设计原则的相关文章

SOA 的基本概念及设计原则浅议

SOA是英文词语"Service Oriented Architecture"的缩写,中文有多种翻译,如"面向服务的体系结构"."以服务为中心的体系结构"和"面向服务的架构",其中"面向服务的架构"比较常见.SOA有很多定义,但基本上可以分为两类:一类认为SOA主要是一种架构风格;另一类认为SOA是包含运行环境.编程模型.架构风格和相关方法论等在内的一整套新的分布式软件系统构造方法和环境,涵盖服务的整个生命

MySQL索引选择及添加原则

索引选择性就是结果个数与总个数的比值. 用sql语句表示为: SELECT COUNT(*) FROM table_name WHERE column_name/SELECT COUNT(*) FROM table_name 一般来说(例如书 "SQL Tuning"),如果选择性超过 20% 那么全表扫描比使用索引性能更优. 但MySQL是没有计算索引的选择性的,只是预测逻辑IO操作的数量,因此对于MySQL索引要慎重选择. 索引几大原则: 1.选择唯一性索引 唯一性索引的值是唯一的

mysql数据库关系表设计原则

https://blog.csdn.net/qq_36432666/article/details/78934073 https://kb.cnblogs.com/page/138526/ http://blog.sina.com.cn/s/blog_a29f7cb50101jr5d.html https://www.cnblogs.com/mjbrian/p/6841226.html https://blog.csdn.net/persistencequxi/article/details/7

Mysql索引介绍及常见索引(主键索引、唯一索引、普通索引、全文索引、组合索引)的区别

Mysql各种索引区别:普通索引:最基本的索引,没有任何限制唯一索引:与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值.主键索引:它 是一种特殊的唯一索引,不允许有空值. 全文索引:仅可用于 MyISAM 表,针对较大的数据,生成全文索引很耗时好空间.组合索引:为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原则. Mysql索引概念:说说Mysql索引,看到一个很少比如:索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不是越多越好,假如这

MySQL索引与Index Condition Pushdown

大约在两年前,我写了一篇关于MySQL索引的文章.最近有同学在文章的评论中对文章的内容提出质疑,质疑主要集中在联合索引的使用方式上.在那篇文章中,我说明联合索引是将各个索引字段做字符串连接后作为key,使用时将整体做前缀匹配. 而这名同学在这个页面找到了如下一句话:index condition pushdown is usually useful with multi-column indexes: the first component(s) is what index access is

MySQL索引与Index Condition Pushdown(二)

实验 先从一个简单的实验开始直观认识ICP的作用. 安装数据库 首先需要安装一个支持ICP的MariaDB或MySQL数据库.我使用的是MariaDB 5.5.34,如果是使用MySQL则需要5.6版本以上. Mac环境下可以通过brew安装: brew install mairadb 其它环境下的安装请参考MariaDB官网关于下载安装的文档. 导入示例数据 与前文一样,我们使用Employees Sample Database,作为示例数据库.完整示例数据库的下载地址为:https://la

mysql索引设计原则

索引设计原则 选择唯?一性索引 唯?一性索引的值是唯?一的,可以更更快速的通过该索引来确定某条记录 为常作为查询条件的字段建?立索引 如果某个字段经常?用来做查询条件,那么该字段的查询速度会影响整个表的查询速度.因 此,为这样的字段建?立索引,可以提?高整个表的查询速度 限制索引的数?目 索引的数?目不不是越多越好 每个索引都需要占?用磁盘空间,索引越多,需要的磁盘空间就越?大 修改表时,对索引的重构和更更新很麻烦 越多的索引,会使更更新表变得很浪费时间 尽量量使?用数据量量少的索引 如果索引的

深入浅出分析MySQL索引设计背后的数据结构

在我们公司的DB规范中,明确规定: 1.建表语句必须明确指定主键 2.无特殊情况,主键必须单调递增 对于这项规定,很多研发小伙伴不理解.本文就来深入简出地分析MySQL索引设计背后的数据结构和算法,从而可以帮你释疑如下问题: 1.为什么innodb表需要主键? 2.为什么建议innodb表主键是单调递增? 3.为什么不建议innodb表主键设置过长? B-tree(多路搜索树,并不是二叉的)是一种常见的数据结构.使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度.B通常

B+树|MYSQL索引使用原则

MYSQL一直了解得都不多,之前写sql准备提交生产环境之前的时候,老员工帮我检查了下sql,让修改了一下存储引擎,当时我使用的是Myisam,后面改成InnoDB了.为什么要改成这样,之前都没有听过存储引擎,于是网上查了一下. 事实上使用不同的存储引擎也是有很大区别的,下面猿友们可以了解一下. 一.存储引擎的比较 注:上面提到的B树索引并没有指出是B-Tree和B+Tree索引,但是B-树和B+树的定义是有区别的. 在 MySQL 中,主要有四种类型的索引,分别为: B-Tree 索引, Ha