为什么要创建索引?

    在此本人也带着相同的疑问,能够解释的仅仅是:为了减少数据库查询时所需要的速度。如果正常查询和索引查询所需时间相差很多倍时我们自然是需要索引的了。

想要知道结果,只能等我学得更加深入一点咯。

创建索引

创建索引有三种方法:(1)在创建表时创建索引; (2)使用ALTER TABLE 语句创建索引;(3)使用CREATE INDEX语句创建索引。

创建索引的类型有:普通索引(INDEX),唯一索引(UNIQUE INDEX),全文索引(FULLTEXT INDEX),空间索引(SPATIAL INDEX);其中全文索引,空间索引必须在MyISAM存储引擎下创建,且全文索引必须在数据类型为:CHAR、VARCHAR和TEXT的列上建立。

下面进行举例:

一、创建表时创建索引

1、创建普通索引

 CREATE TABLE T1
(
id INT NOT NULL,
    name CHAR(50) NULL,
   INDEX SingleIdx(name)
)

创建普通索引的语句为INDEX [索引名](列名),其中列名可以为多个,即以多个关键字创建索引。

2、创建唯一索引

CREATE TABLE T1
(
id INT NOT NULL,
name CHAR(30) NOT NULL,
UNIQUE INDEX UniqIdx(id)
)

   创建唯一索引的语句为 UNIQUE INDEX [索引名](列名)

3、创建全文索引

CREATE TABLE T1
(
id INT NOT NULL,
name CHAR(30) NOT NULL,
age INT NOT NULL,
info VARCHAR(255),
FULLTEXT INDEX FullTxtIdx(info)
) ENGINE=MyISAM;

  创建全文索引的语句为 FULLTEXT INDEX [索引名](列名),  其中存储引擎为MyISAM

  4、创建空间索引

CREATE TABLE T1
(
g GEOMETRY NOT NULL,
SPATIAL INDEX spatLdx(g),
) ENGINE = MyISAM;

  创建空间索引的语句为 FULLTEXT INDEX [索引名](列名),  其中存储引擎为MyISAM

二、在已有表上创建索引

  1、使用ALTER TABLE 语句创建索引

      其中基本语法为: ALTER TABLE table_name ADD [索引种类] [索引名](字段); 

      如:

      普通索引: ALTER TABLE book ADD INDEX BkNameIdx(bookname(30) ); 

      唯一索引: ALTER TABLE book ADD UNIQUE INDEX UniqidIdx( bookId ); 

  全文索引: ALTER TABLE book ADD FULLTEXT INDEX infoIdx( info); 

  空间索引: ALTER TABLE book ADD SPATIAL INDEX spatIdx( g ); 

     2、使用CREATE INNDEX语句创建索引

      其中基本语法为:

  CREATE [索引种类] INDEX [索引名] ON [表名](字段名)

      如:

      普通索引: CREATE INDEX BkNameIDX ON book(bookname); 

      唯一索引: CREATE UNIQUE INDEX UniqidIdx ON book( bookId ); 

  全文索引: CREATE FULLTEXT INDEX ON T1(info); 

  空间索引: CREATE SPATIAL INDEX spatIdx ON T1(g); 

     3、删除索引

     a、用ALTER TABLE 删除:

 ALTRER TABLE [表名] DROP INDEX [索引名];

  b、用DROP INDEX删除:

 DROP INDEX [索引名] ON [表名];

mysql基础操作学习笔记(2)----索引的更多相关文章

  1. mysql基础操作学习笔记(一)

    1前期准备: SQL语言包涵以下4个部分: (1)数据定义语言(DDL):包括DROP, CREATE, ALTER等语句 (2)数据操纵语言(DML):包括INSERT, UPDATE, DELET ...

  2. Mysql高级操作学习笔记:索引结构、树的区别、索引优缺点、创建索引原则(我们对哪种数据创建索引)、索引分类、Sql性能分析、索引使用、索引失效、索引设计原则

    Mysql高级操作 索引概述: 索引是高效获取数据的数据结构 索引结构: B+Tree() Hash(不支持范围查询,精准匹配效率极高) 树的区别: 二叉树:可能产生不平衡,顺序数据可能会出现链表结构 ...

  3. MySQL 5.6学习笔记(索引的创建与删除)

    1. 创建索引 1.1 创建新表时同时建立索引 语法: create table table_name[col_name data_type] [unique|fulltext|spatial][in ...

  4. MySQL基础操作&&常用的SQL技巧&&SQL语句优化

    基础操作     一:MySQL基础操作         1:MySQL表复制             复制表结构 + 复制表数据             create table t3 like t ...

  5. MYSQL 基础操作

    1.MySQL基础操作 一:MySQL基础操作 1:MySQL表复制 复制表结构 + 复制表数据 create table t3 like t1; --创建一个和t1一样的表,用like(表结构也一样 ...

  6. mySQl数据库的学习笔记

    mySQl数据库的学习笔记... ------------------ Dos命令--先在记事本中写.然后再粘贴到Dos中去 -------------------------------- mySQ ...

  7. MYSQL视图的学习笔记

    MYSQL视图的学习笔记,学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆 课程笔记的综合. 视图及图形化工具   1.       视图的定义 视图就是从一个或多个表中,导出来的表,是一个虚 ...

  8. mysql数据库优化课程---13、mysql基础操作

    mysql数据库优化课程---13.mysql基础操作 一.总结 一句话总结:mysql复制表,索引,视图 1.mysql如何复制表? like select * 1.复制表结构 create tab ...

  9. Objective-c基础知识学习笔记

    Objective-c基础知识学习笔记(一) 一直有记录笔记的习惯.但非常久没分享一些东西了,正好上半年開始学习IOS了,如今有空写点.因开发须要,公司特意为我们配置了几台新MAC.还让我们自学了2周 ...

随机推荐

  1. Django--models一对多实例

    需求 models一对多表的构建,创建数据,查询数据,数据前端展示等​. 速查 1.创建数据 1 2 all_data = obj.clean()  #{'username': u'user1', ' ...

  2. 检测局域网中还可用的ip地址

    #!/bin/bash ` do { .$i &>/dev/null ];then echo "192.168.1.$i is not used" fi } done

  3. 全球2/3的DNS瘫痪 顶级域名根服务器故障

    1月21日下午消息,据多家DNS服务商透露,今日下午3点,全国所有通用顶级域的根出现异常,导致部分国内用户无法访问.com域名网站,对全国互联网链接造成系统性影响.   根服务器主要用来管理互联网的主 ...

  4. iOS开发系列通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开

    --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...

  5. BI之SSAS完整实战教程2 -- 开发环境介绍及多维数据集数据源准备

    上一篇我们已经完成所有的准备工作,现在我们就开始动手,通过接下来的三篇文章创建第一个多维数据集. 传统的维度和多维数据集设计方法主要是基于现有的单源数据集. 在现实世界中,当开发商业智能应用程序时,很 ...

  6. Android小项目合集(经典教程)包含十五个Android开发应用实例

    http://www.cnblogs.com/aimeng/archive/2012/03/28/2422435.html

  7. html alert 的三种方式

    html alert 一共有三种方式. 第一种是最简单的直接在js的函数里alert("要输出的内容"); 这种直接就是一个弹出框,显示要输出的内容. 第二种是带选择的弹出框,弹出 ...

  8. 欧拉计划之题目9:找出唯一的满足a + b + c = 1000的毕达哥拉斯三元组{a, b, c}

    本题来自:http://pe.spiritzhang.com/index.php/2011-05-11-09-44-54/10-9a--b--c--1000a-b-c #include <std ...

  9. pace.js和NProgress.js两个加载进度插件的一点小总结

    这两个插件都是关于加载进度动画的,应该说各有特点吧,最起码对我来说是各有优势的.今天一天就捣鼓了加载进度动画,也研究了大量的(也就这两个)加载进度动画,也算对加载进度动画有了一个初步的了解了吧. NP ...

  10. EntityFramework学习

    本文档主要介绍.NET开发中两项新技术,.NET平台语言中的语言集成查询技术 - LINQ,与ADO.NET中新增的数据访问层设计技术ADO.NET Entity Framework.ADO.NET的 ...