MySQL学习总结(三)索引

补充一下,上一章节中约束的一点东西。我们在为约束设置名称的时候(标识符)推荐写法“约束缩写_字段名”,这样让人看起来就会很清晰。例如:FK_Deptno,我们通过索引的名字就可以大概知道这是一个设置的关于Deptno字段的外键。

一个索引包含表中按照一定顺序排序的一列或者多列字段。创建索引主要是为了提高从表中检索数据的速度。但是创建索引有利也有弊,优点是通过索引,可以提高查询的速度。但是过多的创建索引会占据许多的磁盘空间,因此在创建索引的时候一定要权衡利弊。

以下情况适合创建索引:

(1)经常被查询的字段

(2)经常出现在分组中的字段

(3)表的主键或者是外键字段

(4)设置唯一完整性约束的字段

以下情况不适合创建索引:

(1)在查询中很少被使用的字段

(2)拥有许多重复的值的字段

索引名在设置的时候,建议“index_字段名”,这样看起来很清晰。

索引根据创建方式又可以分为两类,自动索引和手动索引。通过名称我们可以简单的理解,自动索引就是自动创建的索引(和废话一样。。),在设置表的主键或者其他设置完整性约束的时候,MySQL系统会自动创建索引。而手动索引,指的是我们主动在表上创建的索引,如下图所示:

1、创建索引

1.1 、创建普通索引

CREATE TABLE table_name(

属性名 数据类型,

属性名 数据类型,

INDEX 索引名(属性名1)

)

1.2、在已经存在的表上创建普通索引

CREATE INDEX 索引名 ON 表名 (属性名)

1.3、ALTER TABLE创建普通索引

ALTER TABLE table_name ADD INDEX 索引名 (属性名)

2、创建唯一索引

唯一索引,就是在创建索引的时候,限制索引值必须是唯一值,通过该类型的索引可以更快的查询某条记录。

2.1 、创建表时创建唯一索引

CREATE TABLE table_name(

属性名 数据类型,

属性名 数据类型,

UNIQUE  INDEX 索引名(属性名1)

)

2.2、在已经存在的表上创建唯一索引

CREATE UNIQUE   INDEX 索引名 ON 表名 (属性名)

2.3、ALTER TABLE创建唯一索引

ALTER TABLE table_name ADD UNIQUE    INDEX 索引名 (属性名)

注意:创建唯一索引的时候,如果表中该字段有为空值的时候,则唯一索引会创建失败。

3、创建全文索引

全文索引主要关联在数据库中数据类型为CHAR、VARCHAR、TEXT的字段上,以便能够更加快速的查询数据量较大的字符串类型的字段。

3.1 、创建表时创建全文索引

CREATE TABLE table_name(

属性名 数据类型,

属性名 数据类型,

FULLTEXT INDEX 索引名(属性名1)

)

3.2、在已经存在的表上创建全文索引

CREATE FULLTEXT INDEX 索引名 ON 表名 (属性名)

3.3、ALTER TABLE创建全文索引

ALTER TABLE table_name ADD FULLTEXT INDEX 索引名 (属性名)

4、通过SQLyog创建索引

右键要创建索引的表,选择改变表菜单,点击“2个索引”,如下图所示:

通过SQLyog软件,我们可以更加方便快捷的创建索引。而且界面也很简单,易上手。

5、删除索引

SQL语法:DROP INDEX index_name ON table_name;

通过SQLyog软件,在表——>索引,点击节点前面的加号,选中要删除的索引,右键选择“删除索引”,根据提示选择是,成功删除,如图:

或在改变表的索引列下删除,上面已经介绍过。

时间: 2024-11-07 09:54:18

MySQL学习总结(三)索引的相关文章

MySQL学习笔记(三)—索引

一.概述 1.基本概念       在大型数据库中,一张表中要容纳几万.几十万,甚至几百万的的数据,而当这些表与其他表连接后,所得到的新的数据数目更是要大大超出原来的表.当用户检索这么大量的数据时,经常会感觉慢.这个时候要提高数据库的检索性能,就必须要用到索引.给表追加合适的索引能极大的改善数据检索的效率,提供数据库性能.      索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,而且每种存储引擎也不一定支持所有的索引类型.      所有存储引擎支持每个表至多16个索引,总索

基于CentOS的MySQL学习补充三--使用Shell批量创建数据库表

本文出处:http://blog.csdn.net/u012377333/article/details/47006087 接上篇介绍<基于CentOS的Mysql学习补充二--使用Shell创建数据库>,本文继续探索关于Shell和MySQL的结合使用,我不知道当一个数据库设计完成之后如何快速的创建设计好的数据库表和添加相应基本数据,我目前知道的就是使用Shell和SQL脚本来达到我的目的--快速的.多次的.可重复利用的创建数据库表. 创建一个数据库表的SQL脚本: /***********

转MYSQL学习(三) 函数

这一节主要介绍MYSQL里的函数,MYSQL里的函数很多,我这里主要介绍MYSQL里有而SQLSERVER没有的函数 数学函数 1.求余函数MOD(X,Y) MOD(X,Y)返回x被y除后的余数,MOD()对于带有小数部分的数值也起作用,他返回除法运算后的精确余数 SELECT MOD(31,8) 2.四舍五入函数TRUNCATE(X,Y) TRUNCATE(X,Y)返回被舍去至小数点后y位的数字x.若y的值为0,则结果不带有小数点或不带有小数部分. 若y设为负数,则截去(归零)x小数点左边起第

mysql 学习 - B+树索引

我们已经知道在单一数据页中查找数据时, 如果查找条件是主键的话, 可以使用二分法定位槽, 然后顺序遍历槽中的数据查找指定数据. 但是我们并不知道如何在数以万计的页中定位数据在哪个页中, 在没有索引的情况下,不论是根据主键列或者其他列的值进行查找,由于我们并不能快速的定位到记录所在的页,所以只能从第一个页沿着双向链表一直往下找,在每一个页中根据我们刚刚唠叨过的查找方式去查找指定的记录. 简单索引介绍 为了能够快速定位数据在哪个页中, 索引规定, 下一个数据页中用户记录的主键值必须大于上一个页中用户

MySQL学习日志(三)

#用户管理 查询优化 日志  ##MySQL 用户管理  用户账号: [email protected] 用户账号管理: CREATE USER   创建用户         CREATE USER [email protected]    [        IDENTIFIED BY [PASSWORD] 'password'           ]        主机也可以使用通配符: create user [email protected]'172.16.100.1_ _'  IDENT

MySQL学习笔记-理解索引index

1.索引就是一本书的目录,当查询表中的某行数据时,可以根据索引迅速定位该行的位置并将其返回为结果集.在MySQL的目录下,有一个data目录里面存放着数据库中的所有结构,数据和索引..frm文件存放表的结构,.MYD存放着数据,.MYI为索引文件.数据以二进制的形式存放在.MYD文件中..MYI文件以某种高效的数据结构存放数据,例如平衡二叉树,当查询数字时,会快速地定位数据的位置. 2.索引提高了查询速度,然而却降低了增删改的速度,因为每当修改数据时,总是要修改索引文件.一般在查询频率较高且重复

Mysql++学习(三)------举个栗子

下面例子显示了如何建立利用Sql++建立一个连接,执行查询操作,返回一个结果集,并且打印. 1 #include <iostream> 2 #include <mysql++.h> 3 #include <errno.h> 4 #include <stdlib.h> 5 #include <stdio.h> 6 7 using namespace std; 8 9 int main() 10 { 11 mysqlpp::Connection co

Mysql学习第三天

1.对表中数据的增删改(DML)      create table t_user(      id int primary key auto_increment,      name varchar(20) not null,      email varchar(20) unique     ) 为表添加记录 (必须掌握) insert into 表名[(列名1,列名2...)] values (值1,值2...);1.插入一条数据 1.1指定要插入那些列       insert into

MYSQL学习笔记三:日期和时间函数

1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ #CURDATE()与CURRENT_DATE()作用同样,返回同样的系统当前日期 #CURDATE()+0则将当前日期值转换成数值类型 SELECT CURDATE(), CURRENT_DATE(), CURDATE()+0; /* CURTIME()和CURRENT_TIME()作用同样.将当前时间以'HH:MM:SS'或者'HH

mysql学习之-三种安装方式与版本介绍

MYSQL版本介绍 mysql分alpha,beta,rc,GA四个版本. alpha  暗示这是一个以展示新特性为目的的版本,存在比较多的不稳定因素,还会向代码中添加新新特性 beta 以后的beta版.发布版或产品发布中,所有API.外部可视结构和SQL命令列均不再更改,不再向代码中添加影响代码稳定性的新特性. rc 是指 Release Candidate. Release candidates被认为是稳定的, 通过了mysql所有的内部测试, 修正了所有已知的致命bug. 但是rc版本还