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 ...
随机推荐
- python coroutine测试
目的:实现一个类似于asyn await的用法,来方便的编写callback相关函数 from __future__ import print_functionimport timeimport th ...
- 解决方案: scp/ssh 的登陆提示很慢 (Linux)
看着用 windows 的 scp 命令很快很是羡慕. 这个问题让我实实郁闷了好几天. 在 Linux 下不管是用 ssh 还是用 scp, 连接速度都很慢 (登陆提示框的弹出时间). 确切地讲, 每 ...
- nodejs express 框架解密2-如何创建一个app
本文是基于express 3.4.6 的 1.在我们的app.js 文件里面有这么几行 http.createServer(app).listen(app.get('port'), function( ...
- Folder Recursion with C#
by Richard Carr, published at http://www.blackwasp.co.uk/FolderRecursion.aspx Some applications must ...
- Windows7 网上邻居设置
1.运行gpedit.msc进入组策略:Windows设置---安全配置---本地策略---安全选项---网络访问:本地账户的共享和安全模型(设为仅来宾-对本地用户进行身份认证)---网络访问:不允许 ...
- INSTALL MYSQL IN MAC
安装好MYSQL后,在System References中找到MYSQL,启动它. 启动之后在终端中输入添加MySQL路径的命令,把MYSQL路径添加到PATH中: PATH="$PATH& ...
- Linux环境的PHP执行
/usr/local/php5/bin/php -c /var/spool/php.ini -q /var/spool/auto.php
- 修改windows密码后ssrs报错
昨夜修改了windows的登录密码,第二日发现ssrs全部无法访问.显示filenotfound等错误.细想一下,应该是修改了windows的密码导致ssrs权限验证失败. 因此将ssrs的服务帐号修 ...
- Spark1.0新特性-->Spark SQL
Spark1.0出来了,变化还是挺大的,文档比以前齐全了,RDD支持的操作比以前多了一些,Spark on yarn功能我居然跑通了.但是最最重要的就是多了一个Spark SQL的功能,它能对RDD进 ...
- 用对 gitignore
使用 git 做代码管理工具时,设置 gitignore 是必不可少的流程,一些系统或者 IDE 会在目录下生成与项目不相关的文件,而这些文件我们不期望被提交到仓库之中.理解 gitignore 的 ...