mysql中的索引和分区

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
应用实时监控服务-应用监控,每月50GB免费额度
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 在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 {表名} ({列名});

image.gif

多列索引

CREATE INDEX {索引名} ON {表名} ({列名1}, {列名2});

image.gif

唯一索引

CREATE UNIQUE INDEX {索引名} ON {表名} ({列名});

image.gif

全文索引

CREATE FULLTEXT INDEX {索引名} ON {表名} ({列名});

image.gif

2.2 最佳适用

       索引不能随意创建,需要选择合适的列,我们应选择常用的查询条件列(即字段在where经常使用的列作为索引)、JOIN 操作列(做左外、右外、全连接时的列)、排序列(作为排序使用的列),频繁更新列应避免添加索引影响性能,同时避免创建过多的索引.若不需要进行全文搜索操作则尽力避免使用全文索引.

2.3 索引相关语句

查询表内索引

SHOW INDEX FROM {表名};

image.gif

查看查询性能

EXPLAIN SELECT * FROM {表名} WHERE {索引字段} = {值};

image.gif

删除索引

ALTER TABLE {表名} DROP INDEX {索引名};

image.gif

3.分区

分区根据基于不同的属性进行分区可分为以下几种:

  • RANGE 分区:基于值的范围进行分区
  • LIST 分区:基于值的列表进行分区
  • HASH 分区:基于哈希值进行分区
  • KEY 分区:基于列的键值进行分区

3.1 创建方法

基本语法

CREATE TABLE {表名} (
    id INT AUTO_INCREMENT PRIMARY KEY,
    column1 datatype,
    column2 datatype,
    ...
)
PARTITION BY {分区类型} ({列名});

image.gif

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)
);

image.gif

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')
);

image.gif

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;

image.gif

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;

image.gif

3.2 最佳适用

       在分区时应尽量选择合适的分区类型、分区数量,避免频繁修改分区键的值,进行分区后应使用EXPLAIN分析查询.

       如:当我们创建不同区域拥有不同权限的系统时,我们可以使用LIST分区,或者根据区域字段进行hash生成额外字段,并使用hash分区.或者直接使用key分区的方式对区域列进行分区.这样可以有效提升不同区域用户查询速度.

感谢您的关注和收藏!!!!!!

image.gif 编辑


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
盹猫
+关注
目录
打赏
0
2
2
0
23
分享
相关文章
|
13天前
|
IntelliJ IDEA 使用技巧与插件推荐
IntelliJ IDEA 是一个功能强大、扩展性丰富的开发工具。通过掌握常用的快捷键和技巧,结合合适的插件,可以大幅提升你的开发效率。
54 0
Springboot应用开发-SpringBootSecurity
Spring Boot Security 是 Spring 提供的安全框架,集成了身份认证和授权功能,帮助开发者快速构建安全的应用程序。本篇博客将从功能介绍到配置和实践,带您全面了解 Spring Boot Security。
142 1
Springboot应用开发-SpringBootSecurity
百万 TPS 服务发布无感知!详解轻量消息队列无损发布实践
阿里云轻量消息队列(原MNS)提供“无损发布”能力,支持高并发、弹性扩展的消息服务。通过优化网络架构与Nginx源码改造,实现服务升级时客户侧零中断、零感知,适用于零售、金融、AI推理等场景。方案兼容ECS与Kubernetes,具备高鲁棒性与通用性,助力企业构建稳定、高效的分布式系统。
192 16
企业级DataAgent: 从数据开始,以数据领先
在数字化转型背景下,数据被视为“新时代的石油”,但多数企业仍面临数据价值难以高效挖掘的困境。文章深入剖析了当前数据分析中存在的“被动响应”模式及其带来的四大挑战,并提出通过Data Agent实现主动智能与数据分析民主化的新路径。Data Agent基于大语言模型和强化学习技术,具备理解、思考与行动能力,能够从“人找数据”转变为“数据找人”,推动数据洞察从专业人员走向全员参与。
AI 时代的 MySQL 数据库运维解决方案
本文探讨了大模型与MySQL数据库运维结合所带来的变革,介绍了构建结构化运维知识库、选择合适的大模型、设计Prompt调用策略、开发MCP Server以及建立监控优化闭环等关键步骤。通过将自然语言处理能力与数据库运维相结合,实现了故障智能诊断、SQL自动优化等功能,显著提升了MySQL运维效率和准确性。
213 18
TEN VAD 与 Turn Detection 让 Voice Agent 对话更拟人
GPT-4o 所展示对话式 AI 的新高度,正一步步把我们在电影《Her》中看到的 AI 语音体验变成现实。AI 的语音交互正在变得更丰富、更流畅、更易用,成为构建多模态智能体的重要组成部分。
162 19
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问