Python Day47索引
一、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. 需要注意,如下图
五 总结
![](/assets/blank.gif)
#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索引相关推荐
- Python中索引的学习笔记
1 前言 今天在学习FaceBoxes- 看到一个比较奇怪的代码,"order = scores.argsort()[::-1][:args.top_k]",不太懂这个" ...
- python:计算索引的类算法(附完整源码)
python:计算索引的类算法 import numpy as np # Class implemented to calculus the index class IndexCalculation: ...
- Python花式索引
Python花式索引 花式索引的索引值是一个数组,对于使用一维整型数组作为索引,如果被索引数据是一维数组,那么索引的结果就是对应位置的元素:如果被索引数据是二维数组,那么索引的结果就是对应下标的行 ...
- python list索引_Python按照索引访问list
原博文 2017-01-09 14:13 − 由于list是一个有序集合,所以,我们可以用一个list按分数从高到低表示出班里的3个同学: >>> L = ['Adam', 'Lis ...
- python将索引升序_程序在Python中按升序删除元素后获取列表的索引
假设我们有一个不同值的列表,并且我们要以非降序删除每个数字.我们必须按删除顺序找到数字索引. 因此,如果输入类似于nums = [4.6.2.5.3.1],那么当我们删除1时,输出将为[5.2.3.0 ...
- Python mysql 索引原理与慢查询优化
一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句 ...
- Python enumerate索引迭代
索引迭代 Python中,迭代永远是取出元素本身,而非元素的索引. 对于有序集合,元素确实是有索引的.有的时候,我们确实想在 for 循环中拿到索引,怎么办? 方法是使用 enumerate() 函数 ...
- python中索引是从什么开始_python索引从0开始,那负数索引算什么?三秋道果说python...
三秋道果说python 常见的序列操作包括索引.切片.相加.相乘和成员资格检查.另外,Python还提供了一些内置函数,可用于确定序列的长度以及找出序列中最大和最小的元素. 注意 有一个重要的操作这里 ...
- python双向索引什么意思_(转)Python 实现双向链表(图解)
原文:https://blog.csdn.net/qq490691606/article/details/49948263 Python 实现双向链表(图解) 双向链表 双向链表也叫双链表,是链表的一 ...
最新文章
- Html内容超出标记宽度后自动隐藏
- php显示类别名,如何在single.php中仅显示父类别名称? (wordpress)
- 前端学习(487):css选择器下
- 对《生产流水线模式》讨论的总结性回复
- 如何玩转 WebGL 并行计算
- MyEclipse项目里面出现红叉的解决方案?
- excel求和为零的解决方法
- nginx反向代理配置解决不同域名默认页面不同问题
- Redis中的数据类型及其应用场景
- 百度文心一言推出内测专用独立 App;暴雪回应被网易起诉:未收到相关诉状;iOS 17或支持第三方应用商店 | 极客头条
- 计算机怎么配置IP地址,Windows系统如何给电脑设置IP地址
- 股票实时数据接口软件的数据来源是哪里?
- 体育世界杂志体育世界杂志社体育世界编辑部2022年第4期目录
- AI 进军考古学!科学家用深度学习算法发现了近 100 万年前人类用火的证据,登上PNAS...
- RT5350 openwrt添加Reset按键,实现短按重启系统,长按复位系统
- Ubuntu18.04卸载微信和QQ
- WLAN配置二层直连直接转发
- 网站专题页SEO优化来抢占海量长尾词排名
- 面向对象——必敲项目(简化版qq炫舞)
- 如何用龙格库塔 方法求解 范德波振子的运动
热门文章
- 编程语言之父谈语言设计,龟叔大赞 TypeScript
- jquery级试题_jQuery经典面试题及答案精选
- java 注解 jpa_详解Spring Data JPA使用@Query注解(Using @Query)
- python local global_Python 关键字global全局变量详解
- tiptop 编译运行_putty终于让我的TIPTOP脱离虚拟机在64位上运行了。
- vue项目做微信分享功能
- Java垂直镜像,Java OpenCV实现图像镜像翻转效果
- html语言的网页制作,HTML语言的网页制作技巧与方法
- sql server计算机用户权限,SQL Server新增用户并控制访问权限设置。
- js读取html元素scr,了解一下JavaScript中的DOM编程