首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏一个会写诗的程序员的博客

    mysql 查看索引、添加索引、删除索引命令添加索引删除索引

    · Non_unique 如果索引不能包括重复词,则为0。如果可以,则为1。 · Key_name 索引的名称。 · Seq_in_index 索引中的列序列号,从1开始。 · Collation 列以什么方式存储在索引中。在MySQL中,有值‘A’(升序)或NULL(无分类)。 · Cardinality 索引中唯一值的数目的估计值。 基数越大,当进行联合时,MySQL使用该索引的机 会就越大。 · Sub_part 如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。 · Index_type 用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)。 · Comment 添加索引 ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName) 删除索引 mysql> alter

    5.1K10发布于 2018-08-17
  • 来自专栏desperate633

    深入理解四种数据库索引类型(- 唯一索引非唯一索引 - 主键索引(主索引) - 聚集索引非聚集索引 - 组合索引)唯一索引非唯一索引主键索引(主索引)聚集索引非聚集索引5.组合索引(联合索引)

    唯一索引/非唯一索引 主键索引(主索引) 聚集索引/非聚集索引 组合索引 唯一索引/非唯一索引 唯一索引 1.唯一索引是在表上一个或者多个字段组合建立的索引,这个或者这些字段的值组合起来在表中不可以重复 非唯一索引 2.非唯一索引是在表上一个或者多个字段组合建立的索引,这个或者这些字段的值组合起来在表中可以重复,不要求唯一。 主键索引(主索引) 3.主键索引(主索引)是唯一索引的特定类型。 表中创建主键时自动创建的索引 。一个表只能建立一个主索引。 聚集索引/非聚集索引 4.聚集索引(聚簇索引),表中记录的物理顺序与键值的索引顺序相同。一个表只能有一个聚集索引。 扩展:聚集索引和非聚集索引的区别?分别在什么情况下使用? 聚集索引和非聚集索引的根本区别是表中记录的物理顺序和索引的排列顺序是否一致。 建议使用非聚集索引的场合为: a.此列包含了大数目的不同值; b.频繁更新的列 5.组合索引(联合索引) 基于多个字段而创建的索引就称为组合索引。

    14.7K20发布于 2018-08-22
  • 来自专栏lgp20151222

    索引之单列索引和组合索引

    前几天老大叫我做了下索引优化,故将学到的东西记录下来。 1)单列索引就不多说了,不设限制的唯一索引,值唯一的唯一索引,一个表一个非空的主键索引 2)组合索引 组合索引,多个列组合的索引。 最左前缀 若有组合索引(a,b,c),那么根据最左前缀,数据库成立了三个索引(a)(a,b)(a,b,c), 重点: 这里可以看出n个列的组合索引,实际新建的普通 索引是n个, 索引的列数是n(n+1) 1.索引的大小应该小于数据表的大小 因为,每个数据不一定用的是最大的长度,而且建立索引的时间高于插入数据,实际上通常满足索引的列数小于数据库的列数,就能确保索引的大小应该小于数据表的大小。 当然,具体公司具体分析,像淘宝的数据服务器估计为了查询速度,索引大小应该远高于数据表大小。 2.组合索引第一个不应该包含单列索引 原因,重复。 (学名组合索引的前导索引/前导列) 3.创建索引时,若一些用于模糊查询的可以只截前面一段,用于查询 优化索引创建时间,索引大小等 4)注意点 1.操作:order by,where,join,查询条件:

    1.9K30发布于 2018-09-10
  • 来自专栏ShyNodes

    覆盖索引,联合索引,索引下推

    覆盖索引: 如果查询条件使用的是普通索引(或是联合索引的最左原则字段),查询结果是联合索引的字段或是主键,不用回表操作,直接返回结果,减少IO磁盘读写读取正行数据 最左前缀: 联合索引的最左 N 个字段 ,也可以是字符串索引的最左 M 个字符 联合索引: 根据创建联合索引的顺序,以最左原则进行where检索,比如(age,name)以age=1 或 age= 1 and name=‘张三’可以使用索引, 单以name=‘张三’ 不会使用索引,考虑到存储空间的问题,还请根据业务需求,将查找频繁的数据进行靠左创建索引。 索引下推: like 'hello%’and age >10 检索,MySQL5.6版本之前,会对匹配的数据进行回表查询。

    1.5K40发布于 2021-07-28
  • 来自专栏用户2442861的专栏

    mysql 创建 主键索引 唯一索引 全文索引 多列索引 添加索引

    查看索引  show index from 数据库表名 alter table 数据库add index 索引名称(数据库字段名称) PRIMARY KEY(主键索引) ALTER TABLE `) INDEX(普通索引) mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) FULLTEXT(全文索引) ALTER 这是最基本的索引,它没有任何限制。 它与前面的"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。 它是一种特殊的唯一索引,不允许有空值。

    8.9K10发布于 2018-09-19
  • 来自专栏民工哥技术之路

    从认识索引到理解索引「索引优化」

    认识索引 认识索引是什么东西非常关键,一个非常恰当的比喻就是书的目录页与书的正文内容之间的关系,为了方便查找书中的内容,通过对内容建立索引形成目录。 索引的类型 B-Tree 索引 以 B-Tree 为结构的索引是最常见的索引类型,比如 InnoDB 和 MyISAM 都是以 B-Tree 为索引结构的索引,事实上是以 B+ Tree 为索引结构,B-Tree 哈希索引 哈希索引是基于哈希表实现的,只有精确匹配索引所有列的查询才有效。方法是,对所有的索引列计算一个 hash code,hash code 作为索引,在哈希表中保存指向每个数据行的指针。 常见优化方法 联合索引最左前缀原则 复合索引遵守「最左前缀」原则,查询条件中,使用了复合索引前面的字段,索引才会被使用,如果不是按照索引的最左列开始查找,则无法使用索引。 范围列可以用到索引,但是范围列后面的列无法用到索引,索引最多用于一个范围列,如果查询条件中有两个范围列则无法全用到索引。

    1K30发布于 2020-09-16
  • 来自专栏Goboy

    ES索引:索引管理

    索引管理再讲索引(Index)前,我们先对照下 ElasticSearch Vs 关系型数据库:PUT /customer/_doc/1{ "name": "DLBOY"}系统默认是自动创建索引的如果我们需要对这个建立索引的过程做更多的控制 那么我们需要做两件事:第一个禁止自动创建索引,第二个是手动创建索引。 索引创建成功后,你可以向该索引中添加文档,执行搜索操作以及执行其他与索引相关的操作。索引是Elasticsearch中组织和存储数据的重要结构。 这个响应表明文档成功地被索引到了"test-index-users"索引中,索引操作是成功的,只有一个分片成功地完成了索引操作。 v'| grep users打开/关闭索引关闭索引POST /test-index-users/_close索引关闭操作将导致该索引不可用,文档无法查询,但数据仍然存在。

    1.5K70编辑于 2023-11-02
  • 来自专栏ops技术分享

    Mysql资料 索引--索引管理

    索引管理 MySQL的索引分类 索引分类 1.普通索引index :加速查找 2.唯一索引 主键索引:primary key :加速查找+约束(不为空且唯一) 唯一索引:unique:加速查找+约束 (唯一) 3.联合索引 -primary key(id,name):联合主键索引 -unique(id,name):联合唯一索引 -index(id,name):联合普通索引 4.全文索引fulltext 其他的如空间索引SPATIAL,了解即可,几乎不用 索引类型 我们可以在创建上述索引的时候,为其指定索引类型,分两类 hash类型的索引:查询单条快,范围查询慢 btree类型的索引:b+树,层数越多, 索引; MyISAM 不支持事务,支持表级别锁定,支持 B-tree、Full-text 等索引,不支持 Hash 索引; Memory 不支持事务,支持表级别锁定,支持 B-tree、Hash 等索引 index name on s1(id,name); #添加普通联合索引 查看索引 mysql> show index from stu; 查看sut表的索引 删除索引 drop index name

    1.1K00发布于 2021-06-09
  • 来自专栏微信公众号:Java团长

    ElasticSearch索引 VS MySQL索引

    这类问题网上很多答案,大概意思呢如下: ES 是基于 Lucene 的全文检索引擎,它会对数据进行分词后保存索引,擅长管理大量的索引数据,相对于 MySQL 来说不擅长经常更新数据及关联查询。 说的不是很透彻,没有解析相关的原理;不过既然反复提到了索引,那我们就从索引的角度来对比下两者的差异。 我们可以为最底层的数据提取出一级索引、二级索引,根据数据量的不同,我们可以提取出 N 级索引。 当我们查询时便可以利用这里的索引变相的实现了二分查找。 ES 索引 MySQL 聊完了,现在来看看 Elasticsearch 是如何来使用索引的。 正排索引 在 ES 中采用的是一种名叫倒排索引的数据结构;在正式讲倒排索引之前先来聊聊和他相反的正排索引。 ?

    2K20发布于 2020-10-26
  • 来自专栏源码之路

    「Mysql索引原理(二)」Mysql高性能索引实践,索引概念、BTree索引、B+Tree索引

    索引是什么 2. 索引的类型 3. BTree索引 概念 举例:以5阶数为列 4. B+Tree索引 概念 5阶B+Tree插入举例 B+树的优点 可以使用B+树索引的查询类型 B+Tree索引的限制 索引是什么 索引是存储引擎用于快速找到记录的一种数据结构。 存储引擎首先在索引中找到对应值,然后根据匹配的索引记录找到对应的数据行。 索引的类型 并没有统一的索引标准,不同存储引擎的索引的工作方式并不一样,也不是所有的存储引擎都支持所有类型的索引。 即使多个存储引擎支持同一种类型的索引,其底层的实现也不一样。 mysql中常用的索引类型包括BTree索引、B+Tree索引、哈希索引。

    2K21发布于 2020-09-03
  • 来自专栏玩转JavaEE

    主键索引就是聚集索引?MySQL 索引类型大梳理

    之前松哥在前面的文章中介绍 MySQL 的索引时,有小伙伴表示被概念搞晕了,主键索引、非主键索引、聚簇索引、非聚簇索引、二级索引、辅助索引等等,今天咱们就来捋一捋这些概念。 1. 按照功能划分 按照功能来划分,索引主要有四种: 普通索引 唯一性索引 主键索引 全文索引 普通索引就是最最基础的索引,这种索引没有任何的约束作用,它存在的主要意义就是提高查询效率。 按照物理实现划分 按照物理实现方式,索引可以分为两大类: 聚集索引(有的人也称之为“聚簇索引”) 非聚集索引(有的人也称之为“非聚簇索引”) 2.1 聚集索引 聚集索引在存储的时候,可以按照主键(不是必须 如果聚集索引在插入的时候不是自增主键,插入效率就会比较低。 2.2 非聚集索引 非聚集索引我们一般也称为二级索引或者辅助索引,对于非聚集索引,数据库会有单独的存储空间来存放。 按照功能分,可以分四种: 普通索引 唯一性索引 主键索引 全文索引 按照存储方式分,可以分两种: 聚集索引 非聚集索引 每种之间有区别又有联系,希望上文能为大家解惑,有问题欢迎留言讨论。

    3.1K20编辑于 2022-03-22
  • 来自专栏逸鹏说道

    维护索引(1)——索引碎片

    前言: DBA的日常任务并不仅仅是创建需要的索引在对应的列上,实际上,DBA还要保持索引创建的高标准。 周而复始,DBA必须盯着一些非常重要的信息: 1、 索引的碎片级别 2、 丢失索引 3、 无效索引 查找索引碎片: 如果索引没有正确维护,那么碎片往往会成为性能瓶颈。 微软建议当碎片百分比在5~30之间的时候,使用重组索引来代替更加耗资源的重建索引。如果碎片超过30%,可以使用重建索引。但是这仅仅是建议而不是绝对的事情。 大部分情况下,如果你仅仅从一个表中通过查询聚集索引上的主键来返回一条数据,那么碎片将不在考虑范围。 准备工作: 了解碎片之后,接着就要知道如何确定索引的碎片? 步骤: 收集你的索引的碎片是第一个重要任务,可以使用以下脚本实现: USE AdventureWorks GO --收集特定表上所有索引、堆的信息 SELECT sysIn.name

    1.5K70发布于 2018-04-11
  • 来自专栏第三方工具

    mongodb创建索引和删除索引和背景索引background

    mongodb创建索引和删除索引和背景索引background MongoDB的背景索引允许在后台创建和重建索引,而不会对数据库的正常操作产生影响。 背景索引的创建过程是非阻塞的,可以在业务运行时创建或重建索引,而不会中断其他操作。这使得我们可以在生产环境中安全地创建和维护索引,而不必担心对数据库性能造成负面影响。 这将会在后台异步地创建索引,而不会阻塞其他操作。在索引创建过程中,我们可以继续对数据库进行正常的增删改查操作,而不会受到索引创建的影响。 在MongoDB中,加索引是为了提高查询性能。 ' 字段添加降序索引 db.collection.createIndex({ fieldname: -1 }); 复合索引: // 对集合中的 'fieldname1' 和 'fieldname2' 字段添加复合索引 不必要的索引可能会降低写操作性能,因此在创建索引时需要权衡利弊。

    1.8K10编辑于 2024-10-09
  • 来自专栏鸿的学习笔记

    索引

    提到了索引,让我们再仔细看看索引。 1.Hash indexes 最简单的索引策略就是:将key值的offset存入在内存,使用hash表进行管理,在搜索时,会先根据key值找到offset,进而由offset找到对应的value值。 一旦重启,索引就需要重新载入。 对于hash indexes,还有一个问题要解决,那就是如果存储的文件过大,超过了disk,那怎么办? 3.B-Trees 除了基于log 的索引外,还有一种更出名的索引,那就是B-Trees。B树将数据分解为一个个固定大小的blocks或者是pages。

    72550发布于 2018-08-06
  • 索引

    本文介绍了数据库索引的概念和各种索引结构,如哈希表、B+树、InnoDB引擎的索引运作原理等。还分享了覆盖索引、联合索引、最左前缀原则等优化技巧,以及如何避免索引误用,提高数据库性能。 四、InnoDB 的索引 4.1 主键索引● 主键索引的叶子节点存的是整行数据。在 InnoDB 里,主键索引也被称为聚簇索引(clustered index)。 索引复用:联合索引可以覆盖多个查询场景,减少独立索引的数量。索引设计的权衡:尽量复用索引,减少索引数量。高频查询优先,为高频查询条件创建索引。字段大小优先,为占用空间较小的字段创建索引。 也就是说,使用了前缀索引就无法使用覆盖索引做性能优化了。1. 覆盖索引的核心思想定义:覆盖索引是指一个索引包含了查询所需的所有字段,因此查询可以直接从索引中获取数据,而无需回表(即无需访问数据行)。 前缀索引的局限性定义:前缀索引是指只对字段的前 N 个字符创建索引,而不是对整个字段创建索引。问题:前缀索引只存储字段的前 N 个字符,无法确定完整字段是否匹配。

    55621编辑于 2025-01-15
  • 来自专栏数据分析

    ——索引

    一、引言 对数据库索引的关注从未淡出我的们的讨论,那么数据库索引是什么样的?聚集索引与非聚集索引有什么不同?希望本文对各位同仁有一定的帮助。有不少存疑的地方,诚心希望各位不吝赐教指正,共同进步。 3 .索引的类型 A ) 聚集索引,表数据按照索引的顺序来存储的。对于聚集索引,叶子结点即存储了真实的数据行,不再有另外单独的数据页。  B ) 非聚集索引,表数据存储顺序与索引顺序无关。 而对于非聚集索引,则是密集索引,在数据页的上一级索引页它为每一个数据行存储一条索引记录。 如果也包含聚集索引,该聚集索引将被用于查找新行将要处于什么位置,随后,聚集索引、以及非聚集索引将被更新。 6 .索引覆盖 索引覆盖是这样一种索引策略:当某一查询中包含的所需字段皆包含于一个索引中,此时索引将大大提高查询性能。 包含多个字段的索引,称为复合索引。

    1.6K70发布于 2018-03-01
  • 来自专栏开源部署

    MySQL高效索引之覆盖索引

    概念 如果索引包含所有满足查询需要的数据的索引成为覆盖索引(Covering Index),也就是平时所说的不需要回表操作 判断标准 使用explain,可以通过输出的extra列来判断,对于一个索引覆盖查询 ,显示为using index,MySQL查询优化器在执行查询前会决定是否有索引覆盖查询 注意 1、覆盖索引也并不适用于任意的索引类型,索引必须存储列的值 2、Hash 和full-text索引不存储值 *,因为如果将所有字段一起做索引会导致索引文件过大,查询性能下降,不能为了利用覆盖索引而这么做 InnoDB 1、覆盖索引查询时除了除了索引本身的包含的列,还可以使用其默认的聚集索引列 2、这跟 INNOB的索引结构有关系,主索引是B+树索引存储,也即我们所说的数据行即索引,索引即数据 3、对于INNODB的辅助索引,它的叶子节点存储的是索引值和指向主键索引的位置,然后需要通过主键在查询表的字段值 ,需要更少的I/O 3、大多数据引擎能更好的缓存索引,比如MyISAM只缓存索引 4、覆盖索引对于InnoDB表尤其有用,因为InnoDB使用聚集索引组织数据,如果二级索引中包含查询所需的数据,就不再需要在聚集索引中查找了

    1.5K10编辑于 2022-08-17
  • 来自专栏源码之路

    「Mysql索引原理(四)」单列索引

    前缀索引和索引选择性 ? 索引的选择性:不重复的索引值(也称为基数)和数据表的记录总数(#T)的比值,范围从1/T到1之间。 选择性越高则查询效率越高,因为选择性高的索引可以让Mysql在查找时过滤掉更多的行。唯一索引的选择性是1,这是最好的索引选择性,性能也是最好的。 发现前缀为3的时候,选择性最接近完整列,所以说以列的前三个字符来做索引是最合适的。索引体积小且查询速度快。 如何创建前缀索引 alter table city_demo add key (city(3)); 前缀索引是一种能使索引更小、更快的有效办法,但另一方面也有缺点:mysql无法使用前缀索引做order 应用场景 存储网站会话时,需要在一个很长的十六进制字符串上创建索引。此时如果采用长度为8的前缀索引通常能显著地提升性能,且对上层应用完全透明。 后缀索引 字符串反转后做前缀索引

    1.2K20发布于 2020-09-04
  • 来自专栏Apache IoTDB

    索引入门:顺序索引

    之前我对索引的了解基本就是主索引和二级索引,此外还经常见到一些其他概念,如聚集索引和非聚集索引,稀疏索引和密集索引等,今天系统整理一下。 本文预计阅读时间 5 分钟。 一般索引都是建立在某些字段上的,这些字段可以叫做搜索键(索引字段),只有在建立了索引字段上查询,才能用相应的索引结构加速查询。上边例子中的索引字段就是 ID。 当然也可以在多个字段上分别建立索引。 索引的分类 第一种分类方法是我们常说的主索引(聚集索引)和二级索引(非聚集索引)。 这个分类方法和文件中记录的排序方式有关。 而其他字段上的索引就叫做 二级索引 或 非聚集索引(NonClustered Index)。简单来说:主索引和磁盘顺序有关,二级索引无关。 稠密和稀疏 在顺序索引中,索引又分稠密索引和稀疏索引,稠密索引是每个记录都有一个索引项。而稀疏索引中只有部分记录对应索引项。

    1.4K10发布于 2020-09-27
  • 来自专栏ops技术分享

    Mysql资料 索引--索引优化(下)

    select * from tb1 where email = 999; 普通索引的不等于不会走索引 - != select * from tb1 where email ! = 123 - > select * from tb1 where email > 'alex' 特别的:如果是主键或索引是整数类型,则还是会走索引 select * from by select name from s1 order by email desc; 当根据索引排序时候,select查询的字段如果不是索引,则不走索引 select email 如果组合索引为:(name,email) name and email -- 使用索引 name -- 使用索引 email (经常使用多个条件查询时) - 尽量使用短索引 - 使用连接(JOIN)来代替子查询(Sub-Queries) - 连表时注意条件类型需一致 - 索引散列值(重复少)不适合建索引,例:性别不适合 image.png

    68900发布于 2021-06-09
领券