Mysql学习笔记(八)索引
PS:把昨天的学习内容补上...发一下昨天学的东西....五月三日。。。继续学习数据库...
学习内容:
索引....
索引的优点:
1.通过创建唯一索引,可以保证数据库每行数据的唯一性...
2.使查找的速度明显加快...
3.当使用分组和排序进行查询时,可以缩短时间...
索引的缺点:
1.维护索引需要耗费数据库的资源...
2.索引需要占用磁盘空间...
3.对表进行增删改的时候,由于索引的存在,时间会有所增加...
索引的分类...
普通索引和唯一索引...
普通索引和唯一索引大致相同,都是属于b-tree结构....唯一不同点就是唯一索引的数据列可以为空,并且每一行的索引列的数据唯一...
单列索引和复合索引...
单列索引就是定义一个索引的参数是唯一一个,复合索引就是定义索引的时候包含的参数可以是多个...并且复合索引的查询必须要使用第一个字段,否则会产生不走索引的情况...原因是复合索引遵循最左前缀集合...
全文索引
全文索引就是定义索引的列上支持值的全文查找,允许在这个列上插入重复值和空值,全文索引可以在字符或者文本上进行定义...存储引擎为Myisam...
空间索引
空间索引必须在myisam表进行创建...是对空间的数据类型的字段建立的索引..空间数据类型有四种geometry,point,linestring,polygon...空间索引使用关键字spatial进行扩展...(说实话,我也不完全清楚空间索引到底能用在什么地方)...
创建索引的语句....
CREATE TABLE table_name[col_name data type]
[unique|fulltext|spatial][index|key][index_name](col_name[length])[asc|desc]
普通索引:
create table book
(
bookid int not null,
bookname varchar(255) not null,
author varchar(255) not null,
info varchar(255) not null,
comment varchar(255),
year_publication year not null,
index(year_publication)
);
show create table book;//显示我们建立的表格的相应信息...
insert into book values(1,'java','James Gosling','good','good',1982); explain select * from book where year_publication=1982;
显示数据会有很多的属性..简单的介绍一下...
id:第几个..select_type:表示查询语句select的复杂程度..table:表格名称...type:访问类型..possible_key:显示索引...key:索引的个数...
key_len:显示使用索引的字节数...ref:显示哪个列被用于索引查找...rows:找到索引所要读取的行数...extra:表示不适合在列中显示,但是又很重要的额外信息...
唯一索引:
唯一索引列的索引值必须唯一,如果是复合索引,复合索引的列组合的值也必须唯一...
create table t1
(
id int not null,
name varchar(255) not null,
age int not null,
info varchar(255),
unique index multidx(id,name)//复合唯一索引...
); Insert into t1 values(1,'we',20,'misaya'),(2,'omg',21,'gogoing');
使用explain查询语句...
explain select * from t1 where id=1 and name="we";//使用索引进行查找...
explain select * from t1 where name="we"//造成了不走索引。。未遵循匹配最左前缀原则...
全文索引...
Fulltext索引可以用于全文索引...只有myisam存储引擎支持全文索引..全文索引不支持过滤索引..
CREATE TABLE t4 (
id INT NOT NULL,
NAME CHAR(30) NOT NULL,
age INT NOT NULL,
info VARCHAR (255),
FULLTEXT INDEX FulltxtIdx (info)
) ;
insert into t4 values(1,'we',20,'misaya');//插入数据 select * from t4 where match(info) against('misaya');//使用全文索引来查找数据..
空间索引:空间索引,用于地理空间类型...自己弄得也不是很明白...所以在这里不进行介绍,避免误人子弟...
在已有的表中去加入索引....
两种方式:
create table t1
(
id int not null,
first_name varchar(255) not null,
last_name varchar(255) not null,
dob date not null
); //添加索引.... 第一种方式.... alter table table_name add[unique][filltext][spatial] 【index】【key】[index_name] (属性值) 【asc】【desc】..... alter table t1 add index firstidx(first_name);//使first_name成为索引... show index from t1;//查看我们建立的索引... 第二种方式.... create [unique][filltext][saptial] 【index】 on table_name(属性值)【asc】【desc】//这个不支持key,。插入key会报错...
create index lastidx on t1(last_name);//使last_name为索引...
删除索引:
两种方式 1.alter table table_name drop index index_name; alter table t1 drop index firstidx;//删除索引... 2.drop index index_name on table_name; drop index lastidx on t1;//删除索引lastidx...
注意:anto_increment 约束字段的唯一索引是不允许被删除的....
无论是添加了索引还是删除了索引,我们都可以使用shou create table table_name来查看数据表建立的情况....
Mysql学习笔记(八)索引的更多相关文章
- MySQL学习笔记八:日期/时间的处理
MySQL日期时间的处理,在其官网文档上都有详细的阐述,想了解更多的同学可自行查阅. 1.查询当前日期时间:函数有now(),localtime(),current_timestamp(),sysda ...
- MySQL学习笔记(三)—索引
一.概述 1.基本概念 在大型数据库中,一张表中要容纳几万.几十万,甚至几百万的的数据,而当这些表与其他表连接后,所得到的新的数据数目更是要大大超出原来的表.当用户检索这么大量的数据时,经 ...
- mysql学习笔记--数据库索引
一.索引的优点:查询速度快 二.索引的缺点: 1. 增.删.改(数据操作语句)效率低了 2. 索引占用空间 三.索引类型: 1. 普通索引 2. 唯一索引(唯一键) 3. 主键索引:只要主键就自动创建 ...
- Mysql学习笔记(一)数据类型
原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型 Mysql数据类型 含义(有符号) tinyint(m ...
- MySQL学习笔记一
MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...
- Mysql学习笔记(二)数据类型 补充
原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...
- 初识mysql学习笔记
使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...
- MySQL学习笔记-锁相关话题
在事务相关话题中,已经提到事务隔离性依靠锁机制实现的.在本篇中围绕着InnoDB与MyISAM锁机制的不同展开,进而描述锁的实现方式,多种锁的概念,以及死锁产生的原因. Mysql常用存储引擎的锁 ...
- MySQL学习笔记-数据库文件
数据库文件 MySQL主要文件类型有如下几种 参数文件:my.cnf--MySQL实例启动的时候在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还介绍了参数类 ...
- MySQL学习笔记-数据库内存
数据库内存 InnoDB存储引擎内存由以下几个部分组成:缓冲池(buffer pool).重做日志缓冲池(redo log buffer)以及额外的内存池(additional memory pool ...
随机推荐
- android如何播放和录制音频
视频录制功能正在走来,在Androidsdk中有与之相关的类:android.media.MediaRecorder.当然,因为模拟器上没有提供必要的硬件设施,所以在学习过程中并不能实现.Media能 ...
- 单点登录 SSO(Single Sign-On)的实现原理
为什么要 SSO? 企业的信息化过程是一个循序渐进的过程,这就造成在企业的不同时期,根据业务和发展需要,构建了多个应用程序,而这些应用程序在功能.设计和技术可能都有所不同,就形成了各自独立的用户库和用 ...
- 进入做Mvc项目的时候 返现某个文件夹下面css js png等静态文件都访问不了
原来是我在该文件夹下面添加了一个web.config 里面 静止了所有的文件 直接访问 <system.web> <httpHandlers> <add ...
- "无法启动应用程序,工作组信息文件丢失,或是已被其他用户已独占方式打开"解决办法
当程序用ado的jet4.0方式连接mdb数据库的时候,对于设有access数据库密码的mdb的访问居然报错“无法启动应用程序,工作组信息文件丢失,或是已被其他用户已独占方式打开”. ADOConne ...
- Android 5.0 Uicc框架分析
已同步更新至个人blog: dxjia.cn Uicc框架 UICC框架是Android在4.1引入的,使的对卡的管理控制更加清晰.要了解这个UICC框架,需要从UiccController开始, ...
- [原创]android自定义控件的最大高度MaxHeightView
代码地址:https://github.com/Carbs0126/MaxHeightView android中部分控件具有maxHeight功能,如button等,但是对于ViewGroup类的控件 ...
- C# 接口的隐式与显示实现
隐式实现的话实现的方法属于实现的类的,可以直接通过类的对象访问,显式实现的话方法是属于接口的,可以看成是寄托在类中实现的,访问这些方法时要先把对象转换成接口对象,然后通过接口对象调用 一般来讲显式实现 ...
- juniper 550M訪问自身公网IP回流内部IP
拓扑图示意: 网关设备juniper 550M, untrust 区: 公网地址段22.22.22.22/29 trust区: 内部员工PC地址:172.16.4.x /24 trust区: ...
- Swift 正式开源, 包括 Swift 核心库和包管理器
Swift 正式开源!Swift 团队很高兴宣布 Swift 开始开源新篇章.自从苹果发布 Swfit 编程语言,就成为了历史上发展最快的编程语言之一.Swift 通过设计使得软件编写更加快速更加安全 ...
- 关于u-boot中的.balignl 16,0xdeadbeef的理解
.globl _start //不占内存_start: b start_code //占4字节内存 ldr pc, _undefined_instruction //占4字节内存 ldr ...