mysql中的索引和分区
目录
1.编写目的
2.索引
2.1 创建方法
2.2 最佳适用
2.3 索引相关语句
3.分区
3.1 创建方法
3.2 最佳适用
Welcome to Code Block's blog
本篇文章主要介绍了
[Mysql中的分区和索引]
❤博主广交技术好友,喜欢文章的可以关注一下❤
1.编写目的
在MySQL中,索引和分区是提高查询效率的关键技术。通过创建合适的索引,可以显著提升数据检索速度。而分区可以作为作为进一步提高查询效率的方式,在较大数量据时通常可以使用这两个结合的方式优化查询速度,所以这边将这两个进行整理,巩固个人知识,同时也希望帮助到有需要的朋友。
2.索引
索引分为单列索引、多列索引、唯一索引、全文索引.
2.1 创建方法
单列索引
CREATE INDEX {索引名} ON {表名} ({列名});
多列索引
CREATE INDEX {索引名} ON {表名} ({列名1}, {列名2});
唯一索引
CREATE UNIQUE INDEX {索引名} ON {表名} ({列名});
全文索引
CREATE FULLTEXT INDEX {索引名} ON {表名} ({列名});
2.2 最佳适用
索引不能随意创建,需要选择合适的列,我们应选择常用的查询条件列(即字段在where经常使用的列作为索引)、JOIN 操作列(做左外、右外、全连接时的列)、排序列(作为排序使用的列),频繁更新列应避免添加索引影响性能,同时避免创建过多的索引.若不需要进行全文搜索操作则尽力避免使用全文索引.
2.3 索引相关语句
查询表内索引
SHOW INDEX FROM {表名};
查看查询性能
EXPLAIN SELECT * FROM {表名} WHERE {索引字段} = {值};
删除索引
ALTER TABLE {表名} DROP INDEX {索引名};
3.分区
分区根据基于不同的属性进行分区可分为以下几种:
- RANGE 分区:基于值的范围进行分区
- LIST 分区:基于值的列表进行分区
- HASH 分区:基于哈希值进行分区
- KEY 分区:基于列的键值进行分区
3.1 创建方法
基本语法
CREATE TABLE {表名} (id INT AUTO_INCREMENT PRIMARY KEY,column1 datatype,column2 datatype,...
)
PARTITION BY {分区类型} ({列名});
RANGE分区
适用于时间范围的分区,可以进行按年份分区:
CREATE TABLE orders (id INT AUTO_INCREMENT,order_date DATE,amount DECIMAL(10, 2),PRIMARY KEY (id, order_date)
)
PARTITION BY RANGE (YEAR(order_date)) (PARTITION p2020 VALUES LESS THAN (2021),PARTITION p2021 VALUES LESS THAN (2022),PARTITION p2022 VALUES LESS THAN (2023)
);
LIST 分区
适用于特定值的分区,可进行按国家、省市区进行分区,如下按国家分区:
CREATE TABLE employees (id INT AUTO_INCREMENT,name VARCHAR(100),country VARCHAR(50),PRIMARY KEY (id, country)
)
PARTITION BY LIST (country) (PARTITION p_us VALUES IN ('USA'),PARTITION p_uk VALUES IN ('UK'),PARTITION p_ca VALUES IN ('Canada')
);
HASH 分区
根据不同字段组成的hash值字段进行分区:
CREATE TABLE products (id INT AUTO_INCREMENT,product_name VARCHAR(100),category_id INT,PRIMARY KEY (id, category_id)
)
PARTITION BY HASH (category_id) PARTITIONS 4;
KEY 分区
根据多个字段进行分区,这类似于根据hash值分区
CREATE TABLE sales (id INT AUTO_INCREMENT,product_id INT,sale_date DATE,amount DECIMAL(10, 2),PRIMARY KEY (id, product_id)
)
PARTITION BY KEY (product_id) PARTITIONS 5;
3.2 最佳适用
在分区时应尽量选择合适的分区类型、分区数量,避免频繁修改分区键的值,进行分区后应使用EXPLAIN分析查询.
如:当我们创建不同区域拥有不同权限的系统时,我们可以使用LIST分区,或者根据区域字段进行hash生成额外字段,并使用hash分区.或者直接使用key分区的方式对区域列进行分区.这样可以有效提升不同区域用户查询速度.
感谢您的关注和收藏!!!!!!

相关文章:
mysql中的索引和分区
目录 1.编写目的 2.索引 2.1 创建方法 2.2 最佳适用 2.3 索引相关语句 3.分区 3.1 创建方法 3.2 最佳适用 Welcome to Code Blocks blog 本篇文章主要介绍了 [Mysql中的分区和索引] ❤博主广交技术好友,喜欢文章的可以关注一下❤ 1.编写目的 在MySQL中&…...
项目实战--C#实现图书馆信息管理系统
本项目是要开发一个图书馆管理系统,通过这个系统处理常见的图书馆业务。这个系统主要功能是:(1)有客户端(借阅者使用)和管理端(图书馆管理员和系统管理员使用)。(2&#…...
信号【Linux】
文章目录 信号处理方式(信号递达)前后台进程 终端按键产生信号kill系统调用接口向进程发信号阻塞信号sigset_tsigprocmasksigpending内核态与用户态:内核空间与用户空间内核如何实现信号的捕捉 1、信号就算没有产生,进程也必须识别…...
Kafka Producer之ACKS应答机制
文章目录 1. 应答机制2. 等级03. 等级14. 等级all5. 设置等级6. ISR 1. 应答机制 异步发送的效率高,但是不安全,同步发送安全,但是效率低。 无论哪一种,有一个关键的步骤叫做回调,也就是ACKS应答机制。 其中ACKS也分…...
【深入理解SpringCloud微服务】深入理解Eureka核心原理
深入理解Eureka核心原理 Eureka整体设计Eureka服务端启动Eureka三级缓存Eureka客户端启动 Eureka整体设计 Eureka是一个经典的注册中心,通过http接收客户端的服务发现和服务注册请求,使用内存注册表保存客户端注册上来的实例信息。 Eureka服务端接收的…...
算法——滑动窗口(day7)
904.水果成篮 904. 水果成篮 - 力扣(LeetCode) 题目解析: 根据题意我们可以看出给了我们两个篮子说明我们在开始采摘到结束的过程中只能有两种水果的种类,又要求让我们返回收集水果的最大数目,这不难让我们联想到题目…...
Django学习第一天(如何创建和运行app)
前置知识: URL组成部分详解: 一个url由以下几部分组成: scheme://host:port/path/?query-stringxxx#anchor scheme:代表的是访问的协议,一般为http或者ftp等 host:主机名,域名,…...
VScode连接虚拟机运行Python文件的方法
声明:本文使用Linux发行版本为rocky_9.4 目录 1. 在rocky_9.4最小安装的系统中,默认是没有tar工具的,因此,要先下载tar工具 2. 在安装好的vscode中下载ssh远程插件工具 3. 然后连接虚拟机 4. 查看python是否已经安装 5. 下载…...
通义千问AI模型对接飞书机器人-模型配置(2-1)
一 背景 根据业务或者使用场景搭建自定义的智能ai模型机器人,可以较少我们人工回答的沟通成本,而且可以更加便捷的了解业务需求给出大家设定的业务范围的回答,目前基于阿里云的通义千问模型研究。 二 模型研究 参考阿里云帮助文档…...
[k8s源码]6.reflector
Reflector 和 Informer 是 Kubernetes 客户端库中两个密切相关但职责不同的组件。Reflector 是一个较低级别的组件,主要负责与 Kubernetes API 服务器进行交互,执行资源的初始列表操作和持续的监视操作,将获取到的数据放入队列中。而 Informe…...
前台文本直接取数据库值doFieldSQL插入SQL
实现功能:根据选择的车间主任带出角色。 实现步骤:OA的“字段联动”功能下拉选项带不出表“hrmrolemembers”,所以采用此方法。 doFieldSQL("select roleid from HrmResource as a inner join hrmrolemembers as b on a.id b.resource…...
【06】LLaMA-Factory微调大模型——微调模型评估
上文【05】LLaMA-Factory微调大模型——初尝微调模型,对LLama-3与Qwen-2进行了指令微调,本文则介绍如何对微调后的模型进行评估分析。 一、部署微调后的LLama-3模型 激活虚拟环境,打开LLaMA-Factory的webui页面 conda activate GLM cd LLa…...
数学建模学习(1)遗传算法
一、简介 遗传算法(Genetic Algorithm, GA)是一种用于解决优化和搜索问题的进化算法。它基于自然选择和遗传学原理,通过模拟生物进化过程来寻找最优解。 以下是遗传算法的主要步骤和概念: 初始化种群(Initialization&a…...
NumPy冷知识66个
NumPy冷知识66个 多维切片: NumPy支持多维切片,可以通过指定多个索引来提取多维数组的子集。 复杂数支持: NumPy可以处理复数,提供了复数的基本运算和函数。 比特运算: NumPy支持比特运算,如与、或、异或等。 数据存储格式: NumPy可以将数…...
Wi-SUN无线通信技术 — 大规模分散式物联网应用首选
引言 在数字化浪潮的推动下,物联网(IoT)正逐渐渗透到我们生活的方方面面。Wi-SUN技术以其卓越的性能和广泛的应用前景,成为了大规模分散式物联网应用的首选。本文将深入探讨Wi-SUN技术的市场现状、核心优势、实际应用中的案例以及…...
在 Ubuntu Server 22.04 上安装 Docker 的详细步骤
在 Ubuntu Server 22.04 上安装 Docker 的详细步骤 本文档详细记录了在 Ubuntu Server 22.04 上安装 Docker 的完整过程,包括解决过程中遇到的问题。希望能对读者有所帮助。 安装过程,重点需要看官方文档。https://docs.docker.com/engine/install/ubu…...
前端使用 Konva 实现可视化设计器(18)- 素材嵌套 - 加载阶段
本章主要实现素材的嵌套(加载阶段)这意味着可以拖入画布的对象,不只是图片素材,还可以是嵌套的图片和图形。 请大家动动小手,给我一个免费的 Star 吧~ 大家如果发现了 Bug,欢迎来提 Issue 哟~ github源码 g…...
vue3 -layui项目-左侧导航菜单栏
1.创建目录结构 进入cmd,先cd到项目目录(项目vue3-project) cd vue3-project mkdir -p src\\views\\home\\components\\menubar 2.创建组件文件 3.编辑menu-item-content.vue <template><template v-if"item.icon"><lay-ic…...
Spring AOP(1)
目录 一、AOP 概述 什么是Spring AOP? 二、Spring AOP 快速入门 1、引入AOP依赖 2、编写AOP程序 三、Spring AOP 详解 1、Spring AOP的核心概念 (1)切点(Pointcut) (2)连接点ÿ…...
第1关 -- Linux 基础知识
闯关任务 完成SSH连接与端口映射并运行hello_world.py ssh -p 37367 rootssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyCheckingno可选任务 1 将Linux基础命令在开发机上完成一遍 可选任务 2 使用 VSCODE 远程连接开发机并创建一个conda环境 …...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
