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学习笔记(八)索引的更多相关文章

  1. MySQL学习笔记八:日期/时间的处理

    MySQL日期时间的处理,在其官网文档上都有详细的阐述,想了解更多的同学可自行查阅. 1.查询当前日期时间:函数有now(),localtime(),current_timestamp(),sysda ...

  2. MySQL学习笔记(三)—索引

    一.概述 1.基本概念       在大型数据库中,一张表中要容纳几万.几十万,甚至几百万的的数据,而当这些表与其他表连接后,所得到的新的数据数目更是要大大超出原来的表.当用户检索这么大量的数据时,经 ...

  3. mysql学习笔记--数据库索引

    一.索引的优点:查询速度快 二.索引的缺点: 1. 增.删.改(数据操作语句)效率低了 2. 索引占用空间 三.索引类型: 1. 普通索引 2. 唯一索引(唯一键) 3. 主键索引:只要主键就自动创建 ...

  4. Mysql学习笔记(一)数据类型

    原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型     Mysql数据类型             含义(有符号)     tinyint(m ...

  5. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  6. Mysql学习笔记(二)数据类型 补充

    原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...

  7. 初识mysql学习笔记

    使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...

  8. MySQL学习笔记-锁相关话题

    在事务相关话题中,已经提到事务隔离性依靠锁机制实现的.在本篇中围绕着InnoDB与MyISAM锁机制的不同展开,进而描述锁的实现方式,多种锁的概念,以及死锁产生的原因.   Mysql常用存储引擎的锁 ...

  9. MySQL学习笔记-数据库文件

    数据库文件 MySQL主要文件类型有如下几种 参数文件:my.cnf--MySQL实例启动的时候在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还介绍了参数类 ...

  10. MySQL学习笔记-数据库内存

    数据库内存 InnoDB存储引擎内存由以下几个部分组成:缓冲池(buffer pool).重做日志缓冲池(redo log buffer)以及额外的内存池(additional memory pool ...

随机推荐

  1. HOWTO - 压缩封装的Setup.exe(纯MSI)安装包获取运行Log

    在InstallShield中我们有时即使选择Basic MSI工程,但有时还是将MSI封装到Setup.exe中交付. 那么出现运行异常如何获取Log,可以用下面的方法: Setup.exe /v& ...

  2. Md5加密方法

    package com.atguigu.surveypark.util; import java.security.MessageDigest; /** * 数据 */ public class Da ...

  3. WPF窗体的命令绑定

    方法一:使用代码 <WpfUI:View.CommandBindings> <CommandBinding Command="Help" CanExecute=& ...

  4. python数据结构之栈、队列的实现

    这个在官网中list支持,有实现. 补充一下栈,队列的特性: 1.栈(stacks)是一种只能通过访问其一端来实现数据存储与检索的线性数据结构,具有后进先出(last in first out,LIF ...

  5. 获取发布版SHA1获取

  6. AX2012 R3升级CU8的一些错误

    AX2012 R3安装升级包CU8后进入系统,系统会提示打开软件升级清单“Software update checklist”,清单列出了升级要做的一系列动作. 在进行到编译应用时“Compile a ...

  7. iOS开发问题之Could not instantiate class named NSLayoutConstraint

    这个问题在ios6.0之前的版本中运行会出现,因为使用Xcode 4.5之后的版本新建项目默认是选中AutoLayout的,但这个特性是在iOS6.0之后的版本中才支持的. 解决办法是选中.stroy ...

  8. saiku执行速度慢

    使用saiku的过程中发现一个重要问题,速度慢!下面是跟踪和优化过程 一.首先抓包,发现ajax请求:http://l-tdata2.tkt.cn6.qunar.com:8080/saiku/rest ...

  9. 创建 iPhone/iOS8 弹出菜单(窗口)

    基本步骤 添加视图:主视图与弹出视图 关联视图 配置弹出视图 编码实现:弹出菜单样式及控制器委托 override func prepareForSegue(segue: UIStoryboardSe ...

  10. 爬网页?--Chrome帮你计算XPath

    最近用HtmlUnit/HtmlCleaner爬网页,这两个工具都使用XPath来定位html元素.发现chrome竟然有算出XPath的功能! 打开一个网页,F12,在弹出的小窗口中选中一个标签,右 ...