iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL索引
  • 967
分享到

MySQL索引

MySQL索引数据库入门数据库基础教程 2015-09-15 14:09:46 967人浏览 无得
摘要

什么是索引? 排好序快速查找的数据结构就是索引 索引作用 提高检索效率,降低数据库对IO成本;降低数据排序,减少cpu消耗 索引类型 单值索引:一个索引包含单个列,一个表可以有多个单值索引 唯一索引:索引值必须唯一,但允许有空值 复合索引:

MySQL索引[数据库教程]

什么是索引

排好序快速查找的数据结构就是索引

索引作用

提高检索效率,降低数据库对IO成本;降低数据排序,减少cpu消耗

索引类型

单值索引:一个索引包含单个列,一个表可以有多个单值索引

唯一索引:索引值必须唯一,但允许有空值

复合索引:一个索引包含多个列

基本语法

创建索引

CREATE [UNIQUE](唯一) INDEX  indexname(索引名称) ON tablename(表名) (columnname(length)字段和类型)  

该命令可以添加普通索引或唯一索引[UNIQUE]

或者

ALTER TABLE tablename ADD PRIMARY KEY (columnname_list)                          ---主键索引

ALTER TABLE tablename ADD  INDEX  UNIQUE  indename(columnname_list)     ---唯一索引

ALTER TABLE tablename ADD  INDEX  indename(columnname_list)                      ---普通索引

ALTER TABLE tablename ADD  INDEX  FULLTEXT indename(columnname_list)   ---全文索引

删除索引

DROP INDEX [indexname]  ON table

查看索引

SHOW INDEX FROM  table 

那些情况需要创建索引

  • 主键自动创建索引
  • 频繁作为查询条件的字段
  • 连表关联的字段,外键关系创建索引
  • 高并发下创建复合索引
  • where字段
  • 排序的字段
  • 查询中统计或分组的字段

如果表记录太少,经常增删改的表,某列字段重复数据较多就不要建立索引

索引优化

  1.  索引有多列时,遵循左前法则;顺序从左开始且不要跳过中间的索引,否则索引失效全盘扫描(带头大哥不能死,中间兄弟不能断)
  2. 不要再索引列上做任何操作,包括计算、函数、自动或者手动类型转换,否则导致索引失效(索引列上无计算)
  3. 范围条件查询之后的索引全部失效,使用范围查询时,有时会使用索引,有时会失效,这是因为使用范围条件的数据量有一定的范围(范围之后全失效)
  4. 索引列尽量和查询列一致,减少select *
  5. 使用“<>”或“!=”导致索引失效
  6. is null,is not null也会导致索引失效
  7. like的“%”在右边不会导致索引失效;查询的列匹配索引列,使用like ‘%xxx%’索引不会失效(like%加右边
  8. 字符串不加单引号或导致索引失效(字符串里有引号)
  9. or用来连接时导致索引失效,但是可以把or用union all代替

关联查询优化

  • 保证被驱动表的join字段已经被索引
  • left join 时,选择小表作为驱动表,大表作为被驱动表
  • inner join 时,mysql会自己帮你把小结果集的表选为驱动表
  • 子查询尽量不要放在被驱动表,有可能使用不到索引

子查询优化

  • 在使用"in"时,用大表驱动小表,"exists"时用小表驱动大表

order by关键字优化

  • ORDER BY子句,尽量使用Index方式排序,避免使用FileSort方式排序
  • 尽可能在索引列上完成排序操作,遵照索引建的最佳左前缀
  • where子句中如果出现索引的范围查询(即explain中出现range)会导致order by 索引失效。

group by关键字优化

  • group by实质是先排序后进行分组,遵照索引建的最佳左前缀
  • where高于having,能写在where限定的条件就不要去having限定了。
  • 当无法使用索引列,增大max_length_for_sort_data参数的设置+增大sort_buffer_size参数的设置
  • 尽量不要使用 distinct,可以考虑分组去重

Mysql索引

原文:https://www.cnblogs.com/-zzc/p/13618841.html

您可能感兴趣的文档:

--结束END--

本文标题: MySQL索引

本文链接: https://www.lsjlt.com/news/7883.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • [MySQL]MySQL索引
    [MySQL]MySQL索引 文章目录 [MySQL]MySQL索引1. 索引的概念2. 认识磁盘磁盘的内部结构磁盘中的一个盘片结构定位扇区磁盘随机访问与连续访问 3. MySQL与磁盘交互的基本单位4. 建立共识5. 索引的...
    99+
    2023-08-17
    mysql 数据库 linux centos 阿里云
  • MySQL---单列索引(包括普通索引、唯一索引、主键索引)、组合索引、全文索引。
    1. 索引 索引是通过某种算法,构建出一个数据模型,用于快速找出在某个列中有一特定值的行,不使用索 引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的 时间就越多,如果表中查询的列有一个索引,MySQL...
    99+
    2023-09-21
    数据库 mysql sql
  • MySQL索引篇
    目录 MySQL索引一、怎么知道一条SQL语句有没有使用索引?二、如何排查慢查询三、索引失效以及为什么失效四、索引为什么能提高查询性能五、为何选择B+树而不是B树六、索引分类七、什么时候创建以及什么时候不需要索引八、索引优化 ...
    99+
    2023-08-19
    mysql 数据库 mybatis
  • MySQL索引 VS ElasticSearch索引的区别
    这篇文章主要介绍了MySQL索引 VS ElasticSearch索引的区别,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。前言这段时间在维护产品...
    99+
    2024-04-02
  • mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
    目录聚集索引(Clustered Index)辅助索引(Secondary Index)覆盖索引(Covering index)联合索引《MySQL技术内幕 InnoDB存储引擎》学...
    99+
    2024-04-02
  • 【MySQL】MySQL索引详解
    Mysql索引 0.写在前面1.为什么要使用索引2.常见的索引模型3.索引维护4.回表?举例子。 0.写在前面 文章中包含了: 1.什么是索引 2.索引的数据结构,以及各自的使用场景 3.为什么要设置主键自增? 4.基于主键...
    99+
    2023-08-16
    mysql 数据库 面试
  • Mysql InnoDB聚簇索引二级索引联合索引特点
    目录一、聚簇索引特点 1特点 2二、二级索引三、联合索引接上一篇内容:https://www.jb51.net/article/249934.htm 一、聚簇索引 其实之前内容中介绍...
    99+
    2024-04-02
  • mysql的索引类型和索引方法
    mysql 索引类型包括普通索引、唯一索引、全文索引、空间索引和哈希索引。索引方法有 btree、hash 和 rtree。选择合适的索引类型和方法取决于数据类型和查询模式,例如范围查找...
    99+
    2024-04-22
    mysql
  • mysql中聚集索引、辅助索引、覆盖索引、联合索引怎么用
    这篇文章主要介绍了mysql中聚集索引、辅助索引、覆盖索引、联合索引怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。聚集索引(Clustered Index)聚集索引就是...
    99+
    2023-06-29
  • mysql使用索引
    mysql使用索引?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!在排序操作中如果能使用到索引来排序,那么可以极大的提高排序...
    99+
    2024-04-02
  • mysql索引失效
    一、索引失效 当or左右查询字段只有一个是索引,该索引失效,只有当or左右查询字段均为索引时,才会生效 使用order by对数据库进行查询时,导致索引失效 ,order by走全表扫描比回表的时间更少 主键和唯一索引在同一列时,会导致索引...
    99+
    2023-09-06
    mysql 数据库
  • MySQL回表,覆盖索引,索引下推
    目录回表覆盖索引索引下推无索引下推: 查看索引下推的状态有索引下推: 开启索引下推回表 在研究mysql二级索引的时候,发现Mysql回表这个操作,往下研究了一下 字面意思,找到索引...
    99+
    2024-04-02
  • MySQL索引基础
    介绍     索引用于加快数据访问的速度。把计算机的磁盘比作一本字典,索引就是字段的目录,当我们想快速查到某个词语的时候只需要通过查询目录找到词语所在的页数,然后直接打开某页就可以。MySQL最常用的索引是...
    99+
    2024-04-02
  • mysql创建索引
    mysql创建索引?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!分为五种索引方式:1.添加PRIMARY KEY(主键索引...
    99+
    2024-04-02
  • 详解MySQL覆盖索引、索引下推
    目录 1.覆盖索引 1.1.概述 1.2.聚集索引、非聚集索引 1.3.回表查询 1.4.覆盖索引 2.索引下推 1.覆盖索引 1.1.概述 覆盖索引,是为了避免“回表查询”,从而降低查询耗时的一种使用索引的方法,所以要聊覆盖索引首先我...
    99+
    2023-09-10
    数据库 java 开发语言
  • Mysql 索引(三)—— 不同索引的创建方式(主键索引、普通索引、唯一键索引)
    了解了主键索引的底层原理,主键索引其实就是根据主键字段建立相关的数据结构(B+树),此后在使用主键字段作为条件查询时,会直接根据主键查找B+树的叶子结点。除了主键索引外,普通索引和唯一键索引也是如此,只不过普通索引要稍微绕一点,下面会具体介...
    99+
    2023-09-12
    mysql 数据库 java
  • MySQL 索引事务
    目录 1. 索引1.1 概念1.2 索引的使用1.2.1 查看索引1.2.2 创建索引1.2.3 删除索引1.2.4 索引背后的数据结果 2. 事务2.1 概念2.2 事务的特性2....
    99+
    2023-09-16
    mysql 数据库
  • Mysql 重建索引
    在MySQL中,可以使用以下两种方法来重建索引: 1、使用ALTER TABLE语句重建索引: ALTER TABLE your_table_name ENGINE=InnoDB; 这将强制MySQL删除并重新构建表和索引。注意,这可能会导...
    99+
    2023-10-08
    mysql 数据库
  • MySQL 索引分类
    文章目录 MySQL 索引分类1、按存储方式区分(1)B+Tree 索引1、BTree2、B+Tree3、BTree 个 B+Tree 的主要区别4、MySQL为什么选择B+Tree ...
    99+
    2023-10-24
    mysql 分类 数据库
  • MYSQL增加索引
    添加主键索引(PRIMARY KEY) ALTER TABLE table_name ADD PRIMARY KEY ( column) 添加普通索引(INDEX)  ALTER TABLE table_name ADD INDEX ind...
    99+
    2023-09-01
    mysql 数据库 sql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作