目录索引什么是索引索引的创建与删除创建索引删除索引索引的使用使用explain分析SQL语句最佳左前缀索引覆盖避免对索引列进行额外运算SQL语句优化小表驱动大表join bufferin/exists索引什么是索引索引是一种方便我们高效查找某一列或几列数据的一种数据结构,一般是 B+树或者 hash树。想象一下在一个表中有一列是我们经常需要用于作为查询条件的列,也就是它经常出现在 where 子句            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-21 11:08:35
                            
                                58阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            B+树B+树是基于B树和叶子节点顺序访问指针实现的。
B树是一棵平衡查找树,其所有的叶子节点都在同一层。
B+树的节点从左至右,非递减排序。即左指针指向的节点<=中间指针指向节点<=右指针指向节点。操作查找:从根节点进行二分递归查找,直至找到叶节点,然后在叶子节点上进行二分查找,直至确认元素位置插入:因为元素的插入会破坏B+树的平衡性,所以需要对树进行分裂、合并和旋转来维护平衡性特点             
                
         
            
            
            
            一、索引分类: 索引列数分类   单列索引   多列索引(复合索引) 类型分类:普通索引(normal INDEX):最基本的索引,没有任何限制主键索引(PRIMARY):它 是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引 唯一索引(UNIQUE):与"普通索引"类似,不同的就是:索引列的值必须唯一,但允            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-28 19:37:21
                            
                                15阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            目录复合查询与表的外连接多表查询自连接子查询:单行子查询多行子查询在from子句中使用子查询表的连接分为内连和外连内连接外连接(重点)左外链接:右外连接:复合查询与表的外连接多表查询emp表中的deptno=dept表中的deptno字段记录select emp.ename,eap.sal,dept.dname from emp,dept 
   where emp.deptno = dept.d            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-31 14:30:44
                            
                                24阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            索引:对某一个字段添加索引,提高查询效率,主键默认是就是个索引。create index 索引名 ON 表名(字段名);   视图:虚拟的表,经常对某段信息进行查询的时候,需要添加一个视图用来提高查询速度,视图和真实的表都能互相影响联合主键:多张表进行关联,通过第三张表来维护多张表的主键,第三张表的自身主键为联合主键复合主键:自身表中有多个字段同时作为主键,单个不能称为主键            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-10 21:34:07
                            
                                188阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1. 前言MySQL涉及到的知识多且深,这里主要捡两个最基础也是后端RD最常接触到的点来展开:InnoDB的事务及索引原理,偏理论,面试中被问到的概率非常大。为了更好的说明原理,贴了很多图,大多来源于网络,侵删。2. InnoDB存储引擎2.1 MySQL分层架构     分层架构  接入层:主要负责连接处理、授权认证、安全等事宜。服务层:查询解析、分析、优化、缓存及所有内置函数,所有跨            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-22 06:38:50
                            
                                173阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            简介本文介绍MySQL的联合索引(也可以称为:组合索引、复合索引)的用法。MySQL一次查询只能使用一个索引。如果要对多个字段使用索引,需要建立复合索引。联合索引的原理联合索引是对多个列进行索引。联合索引也是一棵B+树。 
  联合索引的键值数量不是1,而是大于等于2。B+树在对第一个索引排序的基础上,对第二个索引排序联合索引遵循最左前缀(最左匹配)原则。 假定上图联合索引的为(a,b)            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-26 21:09:57
                            
                                749阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            索引使用索引加快数据库存取的数据对象,合理的使用索引可以大大降低i/o次数,从而提高数据库访问性能。索引有很多种。单列索引单列索引是基于单个列所建立的索引Select *from emp where ename=’scott’;
Create index 索引名字 on 表名(列名) create index aa on emp (ename);
复合索引
复合索引是基于两列或者多列的索引。在同一            
                
         
            
            
            
            八、 联合索引与覆盖索引一 、联合索引联合索引时指对表上的多个列合起来做一个索引。联合索引的创建方法与单个索引的创建方法一样,不同之处在仅在于有多个索引列,如下  mysql> create table t(
    -> a int,
    -> b int,
    -> primary key(a),
    -> key idx_a_b(a,b)
    -            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-08 21:43:00
                            
                                94阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            MySQL索引分类聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据。在InnoDB中,只有主键索引是聚簇索引,如果没有主键,则挑选一个唯一键建立聚簇索引。如果没有唯一键,则隐式的生成一个键来建立聚簇索引。非聚簇索引:将数据存储于索引分开结构,索引结构的叶子节点指向了数据的对应行。在InnoDB中,在聚簇索引之上创建的索引称之为辅助索引,辅助索引访问数据总是需要二次查找,非聚簇索引都是辅            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-28 00:18:35
                            
                                78阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1.索引列不要使用函数和运算2. 尽量避免使用 != 或 not in或 <> 等否定操作符3.当查询条件为多个的时候,可以采用复合索引4.范围查询对多列查询的影响查询中的某个列有范围查询,则其右边所有列都无法使用索引优化查找。举个例子,假设有一个场景需要查询本周发布的资讯文章,其中的条件是必须是启用状态,且发布时间在这周内。那么,SQL 语句可以写成:select*fromnewsw            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-10 21:58:27
                            
                                161阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            关系数据可依赖于主键,主键在物理层面上主要有两个用途:唯一的标识一行 因为主键可以唯一标识一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。作为一个可以被外键引用的对象 一个表的主键通常可以作为另一个表的外键,主键通过与外键构成参照完成性约束,防止出现数据不一致。主键分为单列主键和复合主键:单一主键:只用一列来唯一标识一行create table user(
    id va            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-11 17:49:37
                            
                                247阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            经常听到程序员调侃面试时被要求手撕B树、红黑树,但是入职后却只能做一个安静的CRUD boy。B树与红黑树最广泛的应用就是数据库索引,熟练使用索引是程序员最重要的基本功之一。索引的数据结构可以是树,也可以是哈希表。常用的数据库都是树结构的索引,本篇的背景也全部以树结构的索引为前提。本文旨在梳理各种常见的索引类型,简明扼要地说明它们的区别与联系,不讨论数据结构与算法。话不多说,直接上干货。索引数据库            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-08 20:15:17
                            
                                17阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # 如何在 MySQL 中实现复合索引
在数据库设计与优化中,索引是一项至关重要的概念。复合索引(Composite Index)是一种包含多个列的索引,可以显著提高查询性能。对于刚入行的小白开发者而言,了解复合索引的创建和应用是非常关键的。本文将详细介绍复合索引的实现步骤及相关代码,并通过图形化的方式帮助理解。
## 流程概述
我们将使用以下流程来实现复合索引:
| 步骤 | 说明 |            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-10-12 06:58:59
                            
                                41阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            ## 实现 MySQL 复合索引的流程
### 1. 创建数据库和表
首先,我们需要创建一个数据库和一张表来演示如何创建和使用复合索引。
```sql
-- 创建数据库
CREATE DATABASE mydatabase;
-- 使用数据库
USE mydatabase;
-- 创建表
CREATE TABLE mytable (
  id INT AUTO_INCREMENT PRI            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-09-22 04:54:07
                            
                                100阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。两个或更多个列上的索引被称作复合索引。利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-25 10:56:13
                            
                                113阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            MySQ 索引的原理和数据结构能介绍一下吗、MySQL 聚簇索引和非聚簇索引的区别是什么、他们分别是如何存储的?使用 MySQL 索引都有哪些原则、MySQL 复合索引如何使用。基本会涉及这些知识点,稍微好点公司的面试官哈。2.1)、索引存储结构其实大多面试官问你 mysql 的索引底层是什么数据结构实现的,可能还会现场让你优化 sql,为什么如此优化呢;还可能问你数据库常见的使用规则呢。mysq            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-01 14:41:44
                            
                                124阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            背景最近频繁出现慢SQL导致系统性能问题,于是决定针对索引进行一些优化。一些表结构本身已经有了不少索引,如果再继续添加索引,势必会影响到插入数据的性能。那么,是否可以使用组合索引来达到目的呢?这篇文章咱们来一探究竟。认识复合索引如果where条件中使用到多个字段,并且需要对多个字段建立索引,此时就可以考虑采用复合索引(组合索引)。比如查询地址时需要输入省、市,那么在省、市上建立索引,当数据量大时会            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-10 10:21:33
                            
                                184阅读
                            
                                                                             
                 
                
                             
         
            
            
            
              联合索引又叫复合索引。两个或更多个列上的索引被称作复合索引。 对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c)。 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。 &            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-04 14:32:12
                            
                                98阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1、库相关:
建库:
character set:指定编码
COLLATE:排序规则 utf8mb4_general_ci 大小写不敏感
CREATE DATABASE `test_db` default character set utf8mb4 COLLATE utf8mb4_general_ci;
查看建库语句:
SHOW CREATE DATABASE `test_db`;
2、数据表相关            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-24 10:50:09
                            
                                49阅读