SQL - 索引

news/2024/9/13 23:18:15/ 标签: sql, 数据库
  • 索引本质上是数据库引擎用来快速查找数据的数据结构,可以显著提高查询的性能,为了加快运行较慢的查询。
  • 创建索引
    • 默认索引
      • create index 索引名 on 表名 (列名);
      • 通过对列名进行创建索引,在查询的时候,数据库就能通过索引找到匹配的那些行,适用于支持高效的范围查询。
      • sql">-- 默认索引
        create index idx_points on customers (points);
        select customer_id
        from customers
        where points>1000;
    • 前缀索引
      • create index idx_last_name on customers (last_name(5));
      • 对于长字符串列,建议使用前缀索引来节省存储空间和提高查询效率。前缀索引只索引字符串的前几个字符。
      • sql">--前缀索引
        create index idx_last_name on customers (last_name(5));
        select customer_id
        from customers
        where last_name like 'boa%';
    • 全文索引
      • create fulltext index idx_title_body on posts(title,body);
      • 全文索引可以在应用程序里打造快速强大的搜索引擎,适用于需要高效文本搜索,如文章,博客等。
      • sql">-- 全文索引
        create fulltext index idx_title_body on posts(title,body);
        select *,match(title,body) against ('react redux')
        from posts
        -- where match (全文索引的列名(所有)) against(关键词)-- where match(title,body) against ('react redux')	
        -- 表示包含 'react' 或 'redux' 的记录where match(title,body) against('react -redux +form' in boolean mode) 
        -- 表示包含 'react' ,不包含 'redux',必须包含'form' 的记录

    • 复合索引
      • create index idx_state_points on customers (state,points);
      • 复合索引也叫组合索引,就是对多个列建立一个索引,遵循最左前缀原则,适用于需要在多个列进行查询的场景,显著提高查询效率。
      • sql">-- 复合索引
        create index idx_state_points on customers (state,points);
        explain select customer_id
        from customers
        where state='ca' and points>1000;
        
  • 删除索引
    • drop index idx_state on customers;
  • 使用索引排序
    • 使用索引对数据进行排序,当你在添加索引时,MySQL会获取该列中的所有值,对其排序,并将它们存储在索引中。
  • 覆盖索引
    • 一个包含所有满足查询需要的数据的索引,数据库可以直接从索引中获取数据,避免了回表操作,显著提高查询性能。
  • 维护索引
    • 索引可以极大地提高查询的性能,但要注意在创建新索引之前,要先查看现有索引,否则容易产生"重复索引"和"多余索引"。
    • "重复索引",指同一组列上且顺序一致的索引,对于该索引应删除。
    • "多于索引",指多个索引的前缀列相同,或复合索引中包含了主键的索引,对于该索引应合并。

http://www.ppmy.cn/news/1515240.html

相关文章

VLDB 2024 即将来袭!创邻科技将带来精彩分享

8月26-30日,数据库领域最权威、影响力最大的顶级盛会之一,VLDB 2024 来了! VLDB(International Conference on Very Large Databases)是数据管理、可扩展数据科学和数据库研究人员、厂商、应用开发者以及用户广泛参与…

【Mac】植物大战僵尸杂交版 for Mac(经典策略塔防游戏)游戏介绍

游戏介绍 植物大战僵尸杂交版 for Mac是一款非常受欢迎的策略塔防游戏,植物大战僵尸游戏以其独特的主题、幽默的风格和富有挑战性的关卡设计而著称。玩家需要种植各种植物来防御入侵的僵尸,每种植物都有其特定的功能和攻击方式。植物大战僵尸杂交版&…

RUST知识框架与学习框架

RUST知识框架与学习框架 Rust是一门系统级编程语言,以其内存安全、高性能和并发性而著称,特别适用于开发低级系统、网络服务和并发应用,具有广泛应用前景。 一、Rust知识框架 基础语法与核心概念 变量与类型:包括基本数据类型、…

Hitachi Vantara Programming Contest 2024(AtCoder Beginner Contest 368)ABCDEF

前言 F比E简单多了&#xff0c;难评 A题&#xff1a;Cut 题意 给定n张卡片&#xff0c;将后m张卡片按顺序放置到顶部&#xff0c;按顺序输出卡片id 思路 更改输出方式即可 代码 inline void solve() {int n, m; cin >> n >> m;vector<int> a(n 1);f…

每天一个数据分析题(四百八十九)- 主成分分析与因子分析

关于主成分分析和因子分析的区别&#xff0c;下列描述正确的是&#xff08; &#xff09; A. 主成分分析是一种无监督学习算法&#xff0c;而因子分析是一种有监督学习算法 B. 主成分分析是一种线性变换方法&#xff0c;而因子分析是一种非线性变换方法 C. 主成分分析的结果…

UniApp微信小程序登录实战指南

随着微信小程序的普及&#xff0c;越来越多的人开始关注微信小程序的开发。在这个过程中&#xff0c;登录模块是不可或缺的&#xff0c;而Uniapp也成为了一个流行的微信小程序开发框架。那么&#xff0c;Uniapp微信小程序登录怎么做呢&#xff1f;下面让我们详细了解一下。 一…

倍内菲新品发布揭示宠物营养新纪元,引领行业保驾护航

2024年8月21日&#xff0c;伴随着第26届亚洲宠物展览会的揭幕&#xff0c;宠物主粮领军品牌倍内菲在展会首日举行了一场意义深远的新品发布会&#xff0c;重磅推出两款革命性新品——鲜肉烘焙系列与至护烘焙系列&#xff0c;不仅是对宠物进阶营养需求的深刻洞察&#xff0c;更是…

API 的多版本管理,如何在 Apifox 中操作?

开放 API 是技术团队向外部提供服务和数据的关键手段。随着业务的发展和技术的更新&#xff0c;API 也需要不断进行版本迭代。这种迭代通常是为了满足市场需求&#xff0c;优化现有功能&#xff0c;增加新特性&#xff0c;或者修复漏洞。 在多个版本共存的情况下&#xff0c;团…

计算机网络原理试卷2017年10月

2017年10月高等教育自学考试全国统一命题考试 计算机网络原理试卷 (课程代码04741) 本试卷共5页&#xff0c;满分100分&#xff0c;考试时间150分钟。 考生答题注意事项&#xff1a; 1&#xff0e;本卷所有试题必须在答题卡上作答。答在试卷上无效&#xff0c;试卷空白处和…

秒懂C++之set、map的封装

目录 红黑树的泛型编程 改变比较方式&#xff1a;仿函数 迭代器模拟实现 运算符重载 begin/end !/运算符重载 测试 const Find [ ] 运算符重载 全部代码 RBTree.h Mymap.h Myset.h test.cpp 红黑树的泛型编程 既然我们要实现set,map的封装那肯定要用到我们前面所学…

【论文阅读】DaST: Data-free Substitute Training for Adversarial Attacks(2020)

摘要 Machine learning models&#xff08;机器学习模型&#xff09; are vulnerable&#xff08;容易受到&#xff09; to adversarial examples&#xff08;对抗样本&#xff09;. For the black-box setting&#xff08;对于黑盒设置&#xff09;, current substitute atta…

git远程仓库关联切换迁移

上一篇有关git基础设置文章地址&#xff1a; https://blog.csdn.net/lareinax5/article/details/124271339 关于两个仓库迁移&#xff0c;使用&#xff1a; 一、本地仓库文件关联远程仓库 1.先进入你要上传的文件夹&#xff1a; cd /path/to/your/folder2.初始化仓库、查看…

【动态规划算法题记录】最长/最大 问题汇总 (leetcode)

目录 32. 最长有效括号思路代码 300. 最长递增子序列思路代码 674. 最长连续递增序列思路1&#xff1a;双指针代码1&#xff1a;双指针思路2&#xff1a;dp代码2&#xff1a;dp 718. 最长重复子数组思路1&#xff1a;dp代码1&#xff1a;dp思路2&#xff1a;dp优化代码2&#x…

Git 的基本使用

1.创建 Git 本地仓库 仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂件进⾏版本控制&#xff0c;就必须先创建⼀个仓库出来&#xff0c;例如下面代码创建了gitcode_linux的文件夹&#xff0c;之后再对其进行初始化。创建⼀个 Git 本地仓库对应的命令为 git init &#xff0c…

23 注意力机制—BERT

目录 BERT 预训练NLP 里的迁移学习BERTBERT动机BERT 预训练 NLP 里的迁移学习 在计算机视觉中比较流行,将 ImageNet 或者更大的数据集上预训练好的模型应用到其他任务中,比如小数据的预测、图片分类或者是目标检测 使用预训练好的模型(例如 word2vec 或语言模型)来抽取词、…

4. Java中的ArrayList和LinkedList有什么区别?各自的优缺点是什么?在什么场景下选择使用它们?

​​​​ArrayList 和 LinkedList 是 Java 中两个常用的 List 接口实现类&#xff0c;它们都可以用来存储有序的元素&#xff0c;但在底层实现和性能特征上有显著的区别。 1. 内部实现 ArrayList&#xff1a; ArrayList 底层基于动态数组实现。它维护一个可调整大小的数组&…

opencv处理图片(实战指南)

一、OpenCV简介 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库。它拥有众多的图像处理和计算机视觉功能&#xff0c;包括各种常用的图像处理技术&#xff0c;如滤波、边缘检测、特征提取等。OpenCV支持多种编程语…

LLM 压缩之二: ShortGPT

0. 资源链接 论文: https://arxiv.org/pdf/2403.03853 项目代码: 待开源 1. 背景动机 现有的大语言模型 LLM 推理存在以下问题&#xff1a; LLM 模型因为 scale law 极大的提高模型的预测能力&#xff0c;但是同样带来较大的推理延时&#xff1b;对于 LLM 应用部署带来较大…

[数据集][目标检测]电力场景输电线杆塔塔架金属锈蚀腐蚀生锈检测数据集VOC+YOLO格式1344张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1344 标注数量(xml文件个数)&#xff1a;1344 标注数量(txt文件个数)&#xff1a;1344 标注…

【Docker】如何让子用户直接使用docker命令

本文首发于 ❄️慕雪的寒舍 通过用户组&#xff0c;让子用户可以直接使用docker命令。 说明 正常情况下&#xff0c;使用一个子用户来执行docker命令&#xff0c;会出现如下提示 $ docker ps permission denied while trying to connect to the Docker daemon socket at uni…