当前位置:  数据库>mysql

MySQL笔记之索引的使用

    来源: 互联网  发布时间:2014-10-08

    本文导语:  索引是创建在表上的,对数据库表中一列或多列的值进行排序的一种结构 其作用主要在于提高查询的速度,降低数据库系统的性能开销 通过索引,查询数据不必读完记录的全部信息进行匹配,而是只查询索引列 索引相当于字...

索引是创建在表上的,对数据库表中一列或多列的值进行排序的一种结构

其作用主要在于提高查询的速度,降低数据库系统的性能开销

通过索引,查询数据不必读完记录的全部信息进行匹配,而是只查询索引列

索引相当于字典中的音序表,要查询某字时可以在音序表中找到

然后直接跳转到那一音序所在位置,而不必从字典第一页开始翻,逐字匹配

tips:索引虽能提高查询速度,但在插入记录时会按照索引进行排序,因此降低了插入速度

     最好的操作方式是先删除索引,插入大量记录后再创建索引


索引分类

1.普通索引:不附加任何限制条件,可创建在任何数据类型中

2.唯一性索引:使用unique参数可以设置索引为唯一性索引,在创建索引时,限制该索引的值必须唯一,主键就是一种唯一性索引

3.全文索引:使用fulltext参数可以设置索引为全文索引。全文索引只能创建在char、varchar或text类型的字段上。查询数据量较大的字符串类型字段时,效果明显。但只有MyISAM存储引擎支持全文检索

4.单列索引:在表中单个字段上创建的索引,单列索引可以是任何类型,只要保证索引只对应一个一个字段

5.多列索引:在表中多个字段上创建的索引,该索引指向创建时对应的多个字段

6.空间索引:使用spatial参数可以设置索引为空间索引,空间索引只能建立在空间数据类型上比如geometry,并且不能为空,目前只有MyISAM存储引擎支持


在创建表时创建索引
创建普通索引

代码如下:

mysql> create table index1(
    -> id int,
    -> name varchar(20),
    -> sex boolean,
    -> index(id)
    -> );
Query OK, 0 rows affected (0.11 sec)

此处在id字段上创建索引,show create table可查看


创建唯一性索引

代码如下:

mysql> create table index2(
    -> id int unique,
    -> name varchar(20),
    -> unique index index2_id(id ASC)
    -> );
Query OK, 0 rows affected (0.12 sec)

此处使用id字段创建了一个名为index2_id的索引

这里的id字段可以不设置唯一性约束,但这样一来索引就没有作用


创建全文索引

代码如下:

mysql> create table index3(
    -> id int,
    -> info varchar(20),
    -> fulltext index index3_info(info)
    -> )engine=MyISAM;
Query OK, 0 rows affected (0.07 sec)

要注意创建全文索引时只能使用MyISAM存储引擎


创建单列索引

代码如下:

mysql> create table index4(
    -> id int,
    -> subject varchar(30),
    -> index index4_st(subject(10))
    -> );
Query OK, 0 rows affected (0.12 sec)

此处subject字段长度是30,而索引长度则是10

这么做的目的在于提高查询速度,对于字符型的数据不用查询全部信息


创建多列索引

代码如下:

mysql> create table index5(
    -> id int,
    -> name varchar(20),
    -> sex char(4),
    -> index index5_ns(name,sex)
    -> );
Query OK, 0 rows affected (0.10 sec)

可以看出,这里使用了name字段和sex字段创建索引列


创建空间索引

代码如下:

mysql> create table index6(
    -> id int,
    -> space geometry not null,
    -> spatial index index6_sp(space)
    -> )engine=MyISAM;
Query OK, 0 rows affected (0.07 sec)

这里需要注意空间space字段不能为空,还有存储引擎


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

代码如下:

mysql> create index index7_id on example0(id);
Query OK, 0 rows affected (0.07 sec)
Records: 0  Duplicates: 0  Warnings: 0

这里在现有表的id字段上创建了一条名为index7_id的索引


创建唯一性索引

代码如下:

mysql> create unique index index8_id on example1(course_id);
Query OK, 0 rows affected (0.16 sec)
Records: 0  Duplicates: 0  Warnings: 0

此处只需要在index关键字前面加上unique即可

至于表中的course_id字段,最要也设置唯一性约束条件


创建全文索引

代码如下:

mysql> create fulltext index index9_info on example2(info);
Query OK, 0 rows affected (0.07 sec)
Records: 0  Duplicates: 0  Warnings: 0

fulltext关键字用来设置全文引擎,此处的表必须是MyISAM存储引擎


创建单列索引

代码如下:

mysql> create index index10_addr on example3(address(4));
Query OK, 0 rows affected (0.16 sec)
Records: 0  Duplicates: 0  Warnings: 0

此表中address字段的长度是20,这里只查询4字节,不需要全部查询


创建多列索引

代码如下:

mysql> create index index11_na on example4(name,address);
Query OK, 0 rows affected (0.16 sec)
Records: 0  Duplicates: 0  Warnings: 0

索引创建好之后,查询中必须有name字段才能使用


创建空间索引

代码如下:

mysql> create spatial index index12_line on example5(space);
Query OK, 0 rows affected (0.07 sec)
Records: 0  Duplicates: 0  Warnings: 0

这里需要注意存储引擎是MyISAM,还有空间数据类型

用alter table语句来创建索引
创建普通索引

代码如下:

mysql> alter table example6 add index index13_n(name(20));
Query OK, 0 rows affected (0.16 sec)
Records: 0  Duplicates: 0  Warnings: 0


创建唯一性索引
代码如下:

mysql> alter table example7 add unique index index14_id(id);
Query OK, 0 rows affected (0.20 sec)
Records: 0  Duplicates: 0  Warnings: 0


创建全文索引
代码如下:

mysql> alter table example8 add fulltext index index15_info(info);
Query OK, 0 rows affected (0.08 sec)
Records: 0  Duplicates: 0  Warnings: 0


创建单列索引
代码如下:

mysql> alter table example9 add index index16_addr(address(4));
Query OK, 0 rows affected (0.16 sec)
Records: 0  Duplicates: 0  Warnings: 0


创建多列索引
代码如下:

mysql> alter table example10 add index index17_in(id,name);
Query OK, 0 rows affected (0.16 sec)
Records: 0  Duplicates: 0  Warnings: 0


创建空间索引
代码如下:

mysql> alter table example11 add spatial index index18_space(space);
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

到此,三种操作方式,每种索引类别的建立就都列举了

对于索引,重要的是理解索引的概念,明白索引的种类

更多的是自己的使用经验

最后来看看索引的删除


删除索引

代码如下:

mysql> drop index index18_space on example11;
Query OK, 0 rows affected (0.08 sec)
Records: 0  Duplicates: 0  Warnings: 0

这里是刚刚创建的一条索引

其中index18_space是索引名,example11是表名


    
 
 

您可能感兴趣的文章:

  • Mysql索引类型:B-Tree索引介绍
  • mysql 添加索引 mysql 如何创建索引
  • MySQL索引基本知识
  • MYSQL索引无效和索引有效的详细介绍
  • Mysql索引类型:Hash索引介绍及举例说明
  • mysql下普通索引和唯一索引的效率对比
  • MySQL Hash索引和B-Tree索引的区别
  • Mysql索引会失效的几种情况分析
  • MYSQL索引建立需要注意以下几点细节
  • MySQL查询优化之索引的应用详解
  • Oracle与Mysql主键、索引及分页的区别小结
  • mysql 表索引的一些要点
  • mysql中索引使用不当速度比没加索引还慢的测试
  • MySQL 创建索引(Create Index)的方法和语法结构及例子
  • mysql优化之路----hash索引优化
  • 关于MySQL索引的几点值得注意的事项
  • mysql创建Bitmap_Join_Indexes中的约束与索引
  • mysql 表空间及索引的查看方法
  • MySQL索引的缺点以及MySQL索引在实际操作中有哪些事项
  • MySQL 主键与索引的联系与区别分析
  • mysql5.6.19下子查询为什么无法使用索引
  • MySQL定时器EVENT学习笔记
  • MySQL笔记之别名的使用
  • mysql 数据库基础笔记
  • 用VirtualBox构建MySQL测试环境的笔记
  • MySQL笔记之函数查询的使用
  • MySQL学习笔记2:数据库的基本操作(创建删除查看)
  • MySQL 数据库设计复习笔记及项目实战
  • 高性能MySQL读书笔记 找出谁持有锁
  • MYSQL的select 学习笔记
  • MySQL学习笔记3:表的基本操作介绍
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • MySQL Workbench的下载安装与使用教程
  • mysql使用问题!急...
  • java将类序列化并存储到mysql(使用hibernate)
  • 如何在linux下使用mysql
  • mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法
  • 请问MYSQL在LINUX下如何配置(使用)
  • mysql数据库下载安装教程和使用技巧
  • 使用mysql中遇到的几个问题
  • 初学,关于linux下使用mysql以及卸载的问题
  • 我在linux8.0下装了mysql,已经运行进程mysqld,但怎么设置和使用它呢?
  • linux 下怎么使用mysql-administrator?
  • 教你如何快捷的使用cmd访问mysql小技巧
  • 使用dreamhost空间实现MYSQL数据库备份方法
  • 有关linux下MySql的安装和使用
  • 急!急!急!急!使用MySQL出现的问题
  • python文件读写并使用mysql批量插入示例分享(python操作mysql)
  • linux使用mysql删除数据库的问题,谢谢!
  • 使用JDBC,用什么方法可以知道MYSQL中有几个库,每个库有几个表?
  • mysql求和函数使用示例
  • mysql中的Load data的使用方法
  • 使用MySQL Slow Log来解决MySQL CPU占用高的问题
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • Mysql查询错误:ERROR:no query specified原因
  • MySQL 重装MySQL后, mysql服务无法启动
  • php安装完成后如何添加mysql扩展
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3