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 ...
随机推荐
- C#:如何解决WebBrowser.DocumentCompleted事件的多次调用
关于DocumentCompleted事件,MSDN给出的解释是在文档加载完毕后执行,但是在我的程序中DocumentCompleted却被多次调用,查了一下资料,大概出现了以下几种情况. 1.Web ...
- Parallel的陷阱
,).ToArray(); ; Parallel.For<int>( fromInclusive: , toExclusive: nums.Length, /* 陷阱 */ localIn ...
- Java蛇形数组的简单实现代码
上周五和朋友聊天谈到个蛇形数组的java实现办法,命题是:假设一个二维数组宽w高h,从1开始蛇形输出. int[][] numberMatric = new int[w][h]; 当时午睡过头脑袋不清 ...
- 【Vegas原创】RHEL6.2安装vmtools
1,mount虚拟cdrom # mount /dev/cdrom /mnt/cdrom 2, ls一下,看有没有 # cd /mnt/cdrom # ls –l ...
- JdbcTemplate queryForMap EmptyResultDataAccessException
JdbcTemplate的queryForMap方法报错 queryForMap方法使用不当,就会出错,使用方式如下: The queryForMap method in JdbcTemplate o ...
- Android自定义Seekbar拖动条式样
SeekBar拖动条可以由用户控制,进行拖动操作.比如,应用程序中用户需要对音量进行控制,就可以使用拖动条来实现. 1.SeekBar控件的使用 1.1SeekBar常用属性 SeekBar的常用属性 ...
- Windows7 网上邻居设置
1.运行gpedit.msc进入组策略:Windows设置---安全配置---本地策略---安全选项---网络访问:本地账户的共享和安全模型(设为仅来宾-对本地用户进行身份认证)---网络访问:不允许 ...
- 采用ODAC,ODBC连接Oracle【转】
采用ODAC,ODBC连接Oracle 在没有装oracle的环境中,偶尔会需要访问数据库(Word文档查看数据,开发项目运行等等),简单介绍我用过的方案. 一:ODAC 1.介绍.ODAC,全称:o ...
- 关于移动App的五个提问
1.你的移动App利用了手机的哪些特性? 2.你们是否有用移动的角度和思维来考虑产品形态?还是简单的把Web照搬到手机上? 3.用户有什么特殊的动力去安装你们的App? 4.用户是否能很好的上手和使用 ...
- chrome https添加信任
在浏览器地址栏输入:chrome://net-internals/#hsts 然后到Add domain下,Domain添上诸如google.com和google.com.hk ,并勾选Include ...