索引

ibear 2020-04-09 原文

索引

1、什么是索引?有什么用?

索引相当于一本书的目录,通过索引可以快速的查找到相应的资源,缩小查找的范围

在数据库通过表查询数据方面,一般有两种方式:

  (1)第一:全表扫描所有的数据

  (2)第二:通过索引进行查找

注意:索引虽然可以提高检索效率,但是不能随便添加索引,因为索引也是数据库当中的对象,也需要数据库不断地维护。是有维护成本的。

      比如表中的数据经常被修改就不适合添加索引,因为数据一旦被修改,索引需要重新排序

 

2、什么时候给字段添加索引?(满足什么条件)

2.1注意:添加索引一般是给某个字段或者一些字段添加索引

 

 2.2添加原则:(1)该字段数据量庞大

        (2)该字段很少出现DML操作(insert、delete、update操作时索引也要进行排序)

        (3)该字段一般出现在where子句后

  注意:设置为主键(primary key)、unique关键字的字段会自动添加索引

 

3、查看sql语句的执行计划

   explain select * from tablename where + 条件;

 

3.1我们通过id和name字段分别查看sql执行计划,因为id字段我们设置为primary key 检索时自动通过索引只查找,只查找一行,而通过name查找的需要扫描8行

 

 

 3.2 给字段添加索引

  create index tablename_字段名_index on tablename(字段名)

     create index t_user_name_index on t_user(name)

删除索引:

   drop  index tablename_字段名_index on tablename;

   drop  index t_user_name_index on t_user;

 a.未加索引时sql语句查询时的执行计划:

 

 

  b.添加索引后sql语句查询时的执行计划:

 

 

3.3索引的硬盘映射机制原理:

 

 

 

 

4、索引失效

当使用模糊查询时,第一个为%时为失效。

4.1总表数据:

 

 

4.2加入模糊查询:

 

 总结:尽量不要使用模糊查询会影响查询效率

发表于
2020-04-09 21:20 
一只懒懒的熊Zz 
阅读(
评论(
编辑 
收藏

 

版权声明:本文为ibear原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ibear/p/12669647.html

索引的更多相关文章

  1. MySQL 索引

    MySql 索引 MySql 索引 首先,MySql 支持多种存储引擎,最为常用的是 innodb,MyIsa […]...

  2. MySQL全面瓦解24:构建高性能索引(策略篇)

    学习如果构建高性能的索引之前,我们先来了解下之前的知识,以下两篇是基础原理,了解之后,对面后续索引构建的原则和 […]...

  3. MySQL索引基础

    MySQL索引基础 介绍     索引用于加快数据访问的速度。把计算机的磁盘比作一本字典,索引就是字段的目录, […]...

  4. MSSQL索引视图(indexed view)之简述及使用

      乍一听到这个名字,可能感到有点陌生,这个对象是干嘛的呢?原理是什么?不用着急,我们看看下面的内容,慢慢就明 […]...

  5. 关于索引必须知道的知识

    在学习索引的时候,常常会看到回表、覆盖索引、前缀索引、最左匹配、索引下推、页分裂等等概念,本篇就常见概念进行介 […]...

  6. MySQL 约束、表连接、表关联、索引

    一、外键: 1、什么是外键 2、外键语法  3、外键的条件 4、添加外键 5、删除外键 1、什么是外键: 主键 […]...

  7. 亿级大表在线不锁表变更字段与索引

    摘要:在业界中有一个比较成熟的工具,针对大表的场景,可以在线进行Alter变更,且不会出现锁表的风险。除此之外 […]...

  8. MySQL索引篇之索引存储模型

    MySQL索引篇之索引存储模型   本文重点介绍下索引的存储模型 二分查找   给定一个1~100的自然数,给 […]...

随机推荐

  1. 使用latex的subfigure并排放置两张图

    注意要使用宏包\usepackage{graphicx} 和\usepackage{subfigure} \b […]...

  2. 抽象类 抽象方法 abstract

    abstract: * abstract修饰类: 抽象类 * > 此类不能被实例化 * > 抽象类 […]...

  3. vue教程二 vue组件(3)

    给属性传递数据 <!DOCTYPE html> <html> <head> […]...

  4. 【Demo Project】ajaxSubmit+Servlet表单文件上传和下载

    一、背景 前段时间公司要求我做一个上传和下载固件的页面,以备硬件产品在线升级,现在我把这部分功能抽取出来作为一 […]...

  5. 秒云容器云平台:一站式云原生PaaS平台 – 秒云miaoyun

    秒云容器云平台:一站式云原生PaaS平台 ​本篇文章开始之前,我们以目前室内装修里比较流行的2种方式做对比,来 […]...

  6. 盘点Linux运维常用工具(一)-web篇之httpd

    #前言:想把自己学的各种服务进行分类归档起来,于是就写了盘点Linux运维常用工具,Linux方面使用到的we […]...

  7. Part 3:视图和模板–Django从入门到精通系列教程

    该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www […]...

  8. 深入浅出CSS:关于雪碧图、background-position与steps函数的三角恋

    【测试代码】 HTML 1 <!DOCTYPE html> 2 <html lang="en […]...

展开目录

目录导航