1 mysql索引的类型
在MySQL 中,主要有四种类型的索引,分别为:B-Tree 索引,Hash 索引,Fulltext 索引和RTree
其中hash索引在对待联合索引的处理上有点特别
比如一个name和email列的联合索引,
在innodb,myisam中,是B-Tree索引,
select * from tb where name="james" 将会使用该索引
而如果是在memdb,此时该查询将找不到索引
2 索引的选择
4.0版本的mysql一个查询只能使用一个索引,所以选择索引对性能的影响尤其明显。
类似于联合查询中小结果集驱动大结果集,索引应该选择散列度最高的。
比如查询流水表某个账户的某条流水时,由于历史原因,可用的索引只有一个按账户号码。
那么查询某账户所有流水使用
select * from water where fuin=10001; 显然是足够的
而如果查询某个用户某个订单号的记录信息
select * from water where fuin=10001 and fserial_no=88888;
由于一张表中相同用户的号码的流水很多,所以按索引找到fuin=10001这个子集以后需要遍历该子集所有才能找到合适的记录,
此时最佳的方案是建立一个订单号索引,或者建立一个联合索引,当然,建索引会锁表,这是现网中要考虑的一个问题。
上面是索引不够用的情况的,相反的,如果有多个索引,按照散列度选择最靠谱的索引也是需要使用explain,profile分析出最佳索引。
3 索引的弊端
对于插入频繁的表,索引过多会增加插入的时间,因为插入后要更新索引。
所以规避的方法就是读写表分离,把查询所需的索引建在读表上,可兼顾读写的效率。
4 优化
现网中应该增加对慢查询的监控,可以即时发现db的运行状态。
相关推荐
【MySQL索引 使用笔记】 MySQL数据库是世界上最流行的开源关系型数据库管理系统之一,其高效的数据查询能力在很大程度上依赖于索引。本笔记将深入探讨MySQL中的索引使用,旨在帮助你提升数据库性能。 1. 索引的...
通过对MySQL索引和锁机制的学习,我们可以了解到索引是如何帮助MySQL高效获取数据的。不同类型的索引(如B+树索引、全文索引等)各有优势,可以根据应用场景选择合适的索引类型。此外,锁机制则是保障并发操作下数据...
### MySQL学习笔记—索引详解 #### 索引的重要性 在MySQL中,索引扮演着极其重要的角色,尤其在处理大数据量时更是如此。合理的索引设计不仅可以大幅提升查询性能,还能有效降低服务器资源消耗。根据给定的信息,...
这份"超经典mysql DBA学习笔记"涵盖了成为一名优秀DBA所需掌握的众多知识点,旨在帮助学习者深入理解MySQL数据库的运维与优化。 一、MySQL概述 MySQL是一种开源、免费的关系型数据库管理系统,广泛应用于互联网应用...
数据库 MySQL 学习笔记高级篇.md
通过以上内容的学习,我们不仅了解了MySQL索引的基本概念和工作原理,还掌握了如何合理地设计和维护索引,这对于提高数据库性能和整体系统的运行效率至关重要。希望每位开发者都能够掌握这些知识,在实际工作中灵活...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,索引是其核心特性之一,对于数据库性能优化起着至关重要的作用。本学习笔记将深入探讨MySQL中的索引原理、类型、创建...不断实践和学习,你将成为MySQL索引的专家。
MySQL索引是数据库管理系统中用于加速数据检索的关键技术。索引的存在使得数据库系统不必全表扫描,而是通过索引直接定位到所需数据,显著提高了查询效率。本篇将深入探讨MySQL中的索引机制,特别是B+树索引,以及...
Oracle学习笔记(索引),有具体的代码案例,创建索引,删除索引,重建索引等等
MySQL索引的最佳实践和执行计划的使用分析,包括索引的设计原则,SQL语句的优化原则等
这份“MySQL个人学习笔记”涵盖了从基础到进阶的多个方面,旨在帮助学习者全面理解MySQL的使用。 1. **安装与配置**: 在开始学习MySQL之前,你需要了解如何在不同的操作系统上安装MySQL服务器,如Windows、Linux...
这份“大神写的MySQL DBA学习笔记”无疑是深入理解和掌握MySQL技术的重要资源,尤其适合那些希望提升自己在数据库管理领域技能的人。笔记内容可能涵盖了从基础概念到高级实践的全方位知识,包括但不限于以下关键点:...
MYSQL学习笔记-索引 MYSQL学习笔记-索引是一篇关于MYSQL数据库索引的详细笔记,涵盖了索引的基本概念、类型、创建方法以及使用场景。下面是笔记中的主要知识点: 一、索引的基本概念 * 在数据库表中,使用索引...
这份“超经典mysql dba学习笔记”包含了丰富的MySQL运维知识,对于想要深入理解和掌握MySQL DBA技能的人来说是一份宝贵的资料。 一、MySQL基础知识 在学习MySQL DBA之前,首先需要了解MySQL的基本概念,包括数据库...
### MySQL核心技术学习笔记 #### 一、为什么要学习数据库 学习数据库的重要性主要体现在以下几个方面: 1. **持久化数据到本地**:数据库能够将应用程序产生的数据持久化存储在磁盘上,即使系统重启也不会丢失...
这份“MySQL学习笔记”将引导我们深入理解其核心概念和实用技能。 一、MySQL简介 MySQL是一个开源、免费的数据库系统,由瑞典的MySQL AB公司开发,后被Oracle公司收购。它的设计目标是速度、可移植性和简洁性,支持...
MySQL OCP 超详细学习笔记$pdf MySQL OCP 超详细学习笔记.pdf 是一份详细的 MySQL 学习笔记,旨在帮助 MySQL DBA master 数据库管理的知识和技能。本笔记涵盖了 MySQL 的多个方面,包括 MySQL 的配置、性能优化、...
【MySQL索引优化详解】 MySQL索引优化是提升数据库性能的关键环节,通过合理设计和使用索引,可以显著加快查询速度,减少数据访问的时间。在MySQL中,索引是一种特殊的数据结构,允许数据库快速找到存储在表中的...
本文档主要讨论B-Tree索引,具体包括B-Tree和B+Tree的数据结构特点、MySQL索引的实现、索引使用策略及优化等。 MyISAM和InnoDB是MySQL中的两种主要存储引擎,它们对索引的实现各不相同。MyISAM存储引擎使用的是非...
### MySQL开发学习笔记知识点梳理 #### 一、基础知识概述 - **数据库定义**: 数据库(database)是用于存储数据的仓库,它可以高效地存储和处理数据。主要存储介质有两种:磁盘和内存(RAM)。 - **数据库分类**: - *...