一、MySQL索引管理:

    一 功能:

        1.索引的功能就是加速查找。    

        2.mysql中的pirmary key 和 unique,联合唯一也是索引,这些索引出了加速查找以外还有约束的功能。

二 MySQL常用的索引:

    1.普通索引index:加速查找

    2.唯一索引:1 主键索引 pirmary key:加速查找+约束(不为空不能重复)

          2 唯一索引 unique:加速查找+约束(不能重复)

    3.联合索引: 1 pirmary key(Id,name):联合主键索引

            2 unique(id,name):联合唯一索引

            3 index(id,name):联合普通索引

三、 创建/删除索引的语法:

      

  方法一:创建表时CREATE TABLE 表名 (字段名1  数据类型 [完整性约束条件…],字段名2  数据类型 [完整性约束条件…],[UNIQUE | FULLTEXT | SPATIAL ]   INDEX | KEY[索引名]  (字段名[(长度)]  [ASC |DESC]) );

  方法二:CREATE在已存在的表上创建索引CREATE  [UNIQUE | FULLTEXT | SPATIAL ]  INDEX  索引名 ON 表名 (字段名[(长度)]  [ASC |DESC]) ;  
  方法三:ALTER TABLE在已存在的表上创建索引ALTER TABLE 表名 ADD  [UNIQUE | FULLTEXT | SPATIAL ] INDEX索引名 (字段名[(长度)]  [ASC |DESC]) ;  
  删除索引:DROP INDEX 索引名 ON 表名字;

方式一
create table t1(id int,name char,age int,sex enum('male','female'),unique key uni_id(id),index ix_name(name) #index没有key
);方式二
create index ix_age on t1(age);方式三
alter table t1 add index ix_sex(sex);查看
mysql> show create table t1;
| t1    | CREATE TABLE `t1` (`id` int(11) DEFAULT NULL,`name` char(1) DEFAULT NULL,`age` int(11) DEFAULT NULL,`sex` enum('male','female') DEFAULT NULL,UNIQUE KEY `uni_id` (`id`),KEY `ix_name` (`name`),KEY `ix_age` (`age`),KEY `ix_sex` (`sex`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
 

 

二 在没有索引的前提下测试查询速度

#无索引:mysql根本就不知道到底是否存在id等于333333333的记录,只能把数据表从头到尾扫描一遍,此时有多少个磁盘块就需要进行多少IO操作,所以查询速度很慢
mysql> select * from s1 where id=333333333;
Empty set (0.33 sec)

三 在表中已经存在大量数据的前提下,为某个字段段建立索引,建立速度会很慢

四 在索引建立完毕后,以该字段为查询条件时,查询速度提升明显

PS:

1. mysql先去索引表里根据b+树的搜索原理很快搜索到id等于333333333的记录不存在,IO大大降低,因而速度明显提升

2. 我们可以去mysql的data目录下找到该表,可以看到占用的硬盘空间多了

3. 需要注意,如下图

五 总结

#1. 一定是为搜索条件的字段创建索引,比如select * from s1 where id = 333;就需要为id加上索引#2. 在表中已经有大量数据的情况下,建索引会很慢,且占用硬盘空间,建完后查询速度加快
比如create index idx on s1(id);会扫描表中所有的数据,然后以id为数据项,创建索引结构,存放于硬盘的表中。
建完以后,再查询就会很快了。#3. 需要注意的是:innodb表的索引会存放于s1.ibd文件中,而myisam表的索引则会有单独的索引文件table1.MYIMySAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址。而在innodb中,表数据文件本身就是按照B+Tree(BTree即Balance True)组织的一个索引结构,这棵树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此innodb表数据文件本身就是主索引。
因为inndob的数据文件要按照主键聚集,所以innodb要求表必须要有主键(Myisam可以没有),如果没有显式定义,则mysql系统会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在这种列,则mysql会自动为innodb表生成一个隐含字段作为主键,这字段的长度为6个字节,类型为长整型.



转载于:https://www.cnblogs.com/liuduo/p/7762180.html

Python Day47索引相关推荐

  1. Python中索引的学习笔记

    1 前言 今天在学习FaceBoxes- 看到一个比较奇怪的代码,"order = scores.argsort()[::-1][:args.top_k]",不太懂这个" ...

  2. python:计算索引的类算法(附完整源码)

    python:计算索引的类算法 import numpy as np # Class implemented to calculus the index class IndexCalculation: ...

  3. Python花式索引

    Python花式索引 ​ 花式索引的索引值是一个数组,对于使用一维整型数组作为索引,如果被索引数据是一维数组,那么索引的结果就是对应位置的元素:如果被索引数据是二维数组,那么索引的结果就是对应下标的行 ...

  4. python list索引_Python按照索引访问list

    原博文 2017-01-09 14:13 − 由于list是一个有序集合,所以,我们可以用一个list按分数从高到低表示出班里的3个同学: >>> L = ['Adam', 'Lis ...

  5. python将索引升序_程序在Python中按升序删除元素后获取列表的索引

    假设我们有一个不同值的列表,并且我们要以非降序删除每个数字.我们必须按删除顺序找到数字索引. 因此,如果输入类似于nums = [4.6.2.5.3.1],那么当我们删除1时,输出将为[5.2.3.0 ...

  6. Python mysql 索引原理与慢查询优化

    一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句 ...

  7. Python enumerate索引迭代

    索引迭代 Python中,迭代永远是取出元素本身,而非元素的索引. 对于有序集合,元素确实是有索引的.有的时候,我们确实想在 for 循环中拿到索引,怎么办? 方法是使用 enumerate() 函数 ...

  8. python中索引是从什么开始_python索引从0开始,那负数索引算什么?三秋道果说python...

    三秋道果说python 常见的序列操作包括索引.切片.相加.相乘和成员资格检查.另外,Python还提供了一些内置函数,可用于确定序列的长度以及找出序列中最大和最小的元素. 注意 有一个重要的操作这里 ...

  9. python双向索引什么意思_(转)Python 实现双向链表(图解)

    原文:https://blog.csdn.net/qq490691606/article/details/49948263 Python 实现双向链表(图解) 双向链表 双向链表也叫双链表,是链表的一 ...

最新文章

  1. Html内容超出标记宽度后自动隐藏
  2. php显示类别名,如何在single.php中仅显示父类别名称? (wordpress)
  3. 前端学习(487):css选择器下
  4. 对《生产流水线模式》讨论的总结性回复
  5. 如何玩转 WebGL 并行计算
  6. MyEclipse项目里面出现红叉的解决方案?
  7. excel求和为零的解决方法
  8. nginx反向代理配置解决不同域名默认页面不同问题
  9. Redis中的数据类型及其应用场景
  10. 百度文心一言推出内测专用独立 App;暴雪回应被网易起诉:未收到相关诉状;iOS 17或支持第三方应用商店 | 极客头条
  11. 计算机怎么配置IP地址,Windows系统如何给电脑设置IP地址
  12. 股票实时数据接口软件的数据来源是哪里?
  13. 体育世界杂志体育世界杂志社体育世界编辑部2022年第4期目录
  14. AI 进军考古学!科学家用深度学习算法发现了近 100 万年前人类用火的证据,登上PNAS...
  15. RT5350 openwrt添加Reset按键,实现短按重启系统,长按复位系统
  16. Ubuntu18.04卸载微信和QQ
  17. WLAN配置二层直连直接转发
  18. 网站专题页SEO优化来抢占海量长尾词排名
  19. 面向对象——必敲项目(简化版qq炫舞)
  20. 如何用龙格库塔 方法求解 范德波振子的运动

热门文章

  1. 编程语言之父谈语言设计,龟叔大赞 TypeScript
  2. jquery级试题_jQuery经典面试题及答案精选
  3. java 注解 jpa_详解Spring Data JPA使用@Query注解(Using @Query)
  4. python local global_Python 关键字global全局变量详解
  5. tiptop 编译运行_putty终于让我的TIPTOP脱离虚拟机在64位上运行了。
  6. vue项目做微信分享功能
  7. Java垂直镜像,Java OpenCV实现图像镜像翻转效果
  8. html语言的网页制作,HTML语言的网页制作技巧与方法
  9. sql server计算机用户权限,SQL Server新增用户并控制访问权限设置。
  10. js读取html元素scr,了解一下JavaScript中的DOM编程