索引

作者: 糖炒栗子_01c5 | 来源:发表于2018-08-16 19:52 被阅读0次

索引

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。

加快查找,可以理解为创建了一个索引目录每次查找会在目录中找到位置.

索引的目的在于提高查询效率,同样它也是约束(主键、唯一)。

索引的种类有:

普通索引:加速查找

主键索引:加速查找+不能为空+不能重复

唯一索引:加速查找+不能重复

联合索引(多列):     - 联合主键索引     - 联合唯一索引     - 联合普通索引

添加索引的方法:

在已经存在的表中添加索引:

ALTER TABLE tablename ADD primary key()

ALTER TABLE tablename ADD unique key()

添加普通索引:

 create index 索引名称 on tablename(列,..)

添加一个唯一索引

 create unique index 索引名称 on tablename(列,..)

组合索引(最左前缀匹配):

    - create unique index 索引名称 on 表名(列名,列名)

    - drop unique index 索引名称 on 表名

    - create index ix_name_email on userinfo3(name,email,)

    - 最左前缀匹配

删除索引:

 drop index 索引名称 on tablename

drop unique index 索引名称 on tablename

修改索引名称

对于MySQL 5.7及以上版本,可以执行以下命令

ALTER TABLE tbl_name RENAME INDEX old_index_name TO new_index_name

对于MySQL 5.7以前的版本,可以执行下面两个命令(先删除再添加):

ALTER TABLE tbl_name DROP INDEX old_index_name

ALTER TABLE tbl_name ADD INDEX new_index_name(column_name)

两个名称的概念:

覆盖索引:直接从索引文件中拿出对应的值,不再表中查找。

索引合并:把多个单列索引合并使用。

索引是在MYSQL的存储引擎层中实现的根据搜索引擎分类:

    B-Tree 索引:最常见的索引类型,大部分引擎都支持B树索引。

    HASH 索引:只有Memory引擎支持,使用场景简单。

    R-Tree 索引(空间索引):空间索引是MyISAM的一种特殊索引类型,主要用于地理空间数据类型。

    Full-text (全文索引):全文索引也是MyISAM的一种特殊索引类型,主要用于全文索引,InnoDB从MYSQL5.6版本提供对全文索引的支持。

    hash索引:单值快、范围(慢)

    btree索引: btree索引

        二叉树 (一种算法实现的)

创建索引的时候要了解的知识:

1.创建一个索引,提高了查找效率但是,牺牲了增、删、改效率

2.会加大磁盘空间的开销

3.设置最短索引

4.命中索引

5.类型不一致 如果列是字符串类型,传入条件是必须用引号引起来,不然...

6:用索引查询范围的话,如果市住建则还是会走索引

7.当根据索引排序时候,选择的映射如果不是索引,则不走索引 特别的:如果对主键排序,则还是走索引

8.组合索引最左前缀 如果组合索引为:(name,email) name and email -- 使用索引 name -- 使用索引 email -- 不使用索引

索引选择原则

1.较频繁的作为查询条件的字段应该创建索引

2.唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件

3.更新非常频繁的字段不适合创建索引

4.不会出现在 WHERE 子句中的字段不该创建索引

不要过度索引,只保持所需的索引。每个额外的索引都要占用额外的磁盘空间,并降低写操作的性能。 在修改表的内容时,索引必须进行更新,有时可能需要重构,因此,索引越多,所花的时间越长

其他注意事项

避免使用select *

count(1)或count(列) 代替 count(*)

创建表时尽量时 char 代替 varchar

表的字段顺序固定长度的字段优先

组合索引代替多个单列索引(经常使用多个条件查询时)

尽量使用短索引

使用连接(JOIN)来代替子查询(Sub-Queries)

连表时注意条件类型需一致

索引散列值(重复少的列做索引)不适合建索引,例:性别不适合

相关文章

  • MySQL索引

    MySQL索引 索引介绍 索引原理与分析 组合索引 索引失效分析 索引介绍 什么是索引索引:包括聚集索引、覆盖索引...

  • Mysql优化

    一.索引科普 主键索引 唯一索引 普通索引 单列索引 多列索引 聚簇索引 非聚簇索引 前缀索引 全文索引 二.优化...

  • Oracle 索引学习

    创建索引 标准语法 唯一索引 组合索引 反向键索引 示例 删除索引 修改索引 重建索引 联机重建索引 合并索引

  • MySQL索引

    索引的作用 查看索引 创建索引 删除索引 索引类型 强制索引和禁止某个索引

  • Pandas数据操作

    Pandas数据操作 Series索引 行索引 切片索引 不连续索引 布尔索引 DataFrame索引 列索引 不...

  • 深入理解四种数据库索引类型(- 唯一索引/非唯一索引 - 主键索

    唯一索引/非唯一索引 主键索引(主索引) 聚集索引/非聚集索引 组合索引 唯一索引/非唯一索引 唯一索引 1.唯一...

  • MYSQL索引

    mysql的4种常用索引类型:唯一索引,主键索引,全文索引,以及普通索引。 普通索引(INDEX):普通索引为索引...

  • 索引类型

    索引类型有: 主键索引; 唯一索引; 普通索引; 全文索引; 多列索引;

  • mysql 查询效率优化之 常用索引的几种类型 新手使用教程,少

    Mysql常见索引有:主键索引、唯一索引、普通索引、全文索引、组合索引(联合索引,多列索引) 一、建立的方法介绍 ...

  • MySql 数据查询优化

    1. MySQL索引类型: mysql的索引有5种:主键索引、普通索引、唯一索引、全文索引、聚合索引(多列索引)。...

网友评论

      本文标题:索引

      本文链接:https://www.haomeiwen.com/subject/nbgobftx.html