• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > MySQL中关于索引与触发器详解

MySQL中关于索引与触发器详解

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了MySQL,触发器,详解等相关知识,希望本文的分享对您有所帮助
1》索引的含义和特点:

    索引是什么,索引相当于字典里面的目录序表,比如查询一个“星”字,如果不按照拼音来找的话,那么我们需要把整个字典全部遍历查询一边。才能查到这个字, 如果按照拼音来找的,那么只需要在几页音序表中查询。就可以通过音序就快速查到,这个字在字典的哪一页。在数据库中,索引是建立在表上面的,索引可以很大程
度上提高数据库的查询,同时也提高了数据库的性能,不同的存储引擎定义了索引的最大长度和索引的数量,所有的存储引擎对每个表最少支持16个索引,索引的长度 最少支持位256字节;

  索引优点:
    其优点可以提高数据的检索速度,针对于有依赖关系的子表和父表,在联合查询的时候可以提高查询速度。
  索引的缺点:
    创建和维护索引需要消耗时间,索引需要占用物理空间,每一个索引都需要占用一定的物理空间,大量的索引会影响插入数据,数据库系统会按照索引进行排 序,这样降低了插入数据的速度;
  解决办法:在插入数据时,先临时删除表的索引,然后插入数据,数据插入完成后,再创建索引。

2》索引的分类:
  Mysql的索引类型有:普通索引,唯一性索引,全文索引,单列索引、多列索引和空间索引等;

  1>普通索引
    创建普通索引时,不附加任何限制条件,,这类索引可以创建在任何的数据类型上面,
  2>唯一性索引
    使用unique参数可以设置唯一索引,在创建唯一索引时,限制该索引的值必须是唯一的。比如在student表中,user_name 字段设置为唯一索引的话, 那么此值必须是唯一的。
  3>全文索引
    使用fulltext参数可以设置为全文索引,全文索引只能创建char varchar或者Text类型的字段上。只有MyISAM的存储引擎才支持此索引。Mysql5.6 innodb开始支持全文索引
  4>单列索引
    在表中的单个字段上创建索引,单列索引只根据该字段进行索引。单列索引可以是、普通索引、也可以是唯一索引,还可以是全文索引。只要保证该索 引只对应一个字段即可。

5>多列索引
    多列索引是在表的多个字段上创建一个索引,该索引指向创建时对应的多个字段。可以通过这几个字段进行查询。但是使用了多列索引,只有查询这些 字段中的第一个字段时才会被使用索引。比如:在表中id、name和sex字段上建立一个多列索引,那么,只有查询条件使用了id 字段时多列索引才会被使 用;
  6>空间索引
    使用spatial参数可以设置为空间索引, 空间索引只能建立在空间数据类型上,目前只有使用MyISAM存储引擎才支持空间索引。而且此索引的字段值不 能为空。
  练习:查询一下是否有其它类型的索引,
      Hash 索引主键索引 B-tree索引

3》如何设计索引:
  为了让索引使用效率更高,在创建索引时,必须考虑在那些字段上创建索引和创建什么类型的索引;
  1>唯一索引的设置:
    唯一索引的值是唯一的,可以更快速的通过该索引可以确定某条记录;
    比如:身份证号码是唯一的,可以建立唯一索引,如果是名字的话,那么有可能出现同名的状况,从而减低查询速度。
  2>为经常需要排序、分组和联合操作的字段建立索引:
    经常需要order by group by distinct和union等操作的字段,排序操作会浪费很多时间,如果为这些字段建立索引,可以有效地的避免排序操作;
  3>为常作为查询条件的字段建立索引:
    如果某一个字段常用需要来查询条件,那么该字段的查询速度影响这个张表的速度,因此为这样的字段建立索引,可以提高整张表的查询速度;
  4>限制索引的数目:
    索引的数目不是越多越好,每个索引都需要占用磁盘空间。索引越多,需要的磁盘空间就越大,修改表时,所索引的重构和更新麻烦,越多的索引更新 表就变得很浪费时间;
  5>尽量使用数据量少的索引:
    如果索引的值很长,那么查询的速度会受到影响,比如对一个Char(100)类型的字段进行全文索引需要的时间肯定要比char(10)类型的字段需要的时间更 多;
  6>删除不再使用和很少使用的索引:
    表中的数据被大量更新,或者数据的使用方式被改变后,原有的一些索引可能不在需要,DBA应该定期的找出这些索引,将它们删除,从而减少索引对 更新操作的影响;

4》如何创建索引:

  语法:
    [unique|fulltext|spatial] index |key
    [别名] (属性名1 [(长度)] [ASC|DESC] )
    unique可选参数,代表唯一索引
    fulltext 可选参数,代表全文索引
    spatial 可选参数,代表空间索引
    index 和key 用来指定字段为索引两者选择其一。
    别名可选参数,给创建的索引取新的名称。
    长度可选参数,给索引执定长度,必须是字符类型的才可以指定长度。
    ASC升序,DESC降序。

1>创建普通索引
     

 Mysql->create table aatest(
                                 id int,
                                 name varchar(20),
                                 sexboolean,
                                 index(id));

      使用 index设置id为普通索引。
     Mysql> show create table aatest\G; 查看一下表详细结构
     Mysql>explain select * from aatest where id=1 \G; 查看索引是否被使用。

2>建立唯一索
       唯一索引使用unique进行约束
      

create table aatest2(
                                          id int unique,
                                            name varchar(20),
                                          unique index aatest_id(id ASC));


     3>创建全文索引
      

 create table aatest3(
                                                    id int,
                                                    info varchar(20),
                                                      fulltext index aatest3_info(info));

       *******5.6版本已支持全文索引

     4>创建单列索引
      

 create table aatest4(
                                                     id int,
                                                      subject varchar(30),
                                                     index aatest4_st(subject(10)));subject(10)指定索引的长度


5>创建多列索引
      多列索引,是在表上多个字段创建一个索引。
      

  create table aatest5(
                                                       id int,
                                                         name varchar(20),
                                                       sex char(4),
                                                       index aatest5_ns(name,sex));


5》在已经有的表上建立

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 分享下mysql各个主要版本之间的差异
  • MySQL essential版本和普通版本有什么区别?
  • redhat 5.4下安装MYSQL全过程
  • 如何用SQL命令查看Mysql数据库大小
  • 解析mysql中如何获得数据库的大小
  • 解析mysql修改为utf8后仍然有乱码的问题
  • 5个常用的MySQL数据库管理工具详细介绍
  • 解析在MySQL里创建外键时ERROR 1005的解决办法
  • 解析远程连接管理其他机器上的MYSQL数据库
  • mysql 精简过程(删除一些文件)

相关文章

  • 2018-12-05快速插入大量数据的asp.net代码(Sqlserver)
  • 2018-12-05Oracle8i和Microsoft SQL Server比较
  • 2018-12-05MYSQL查询怎么优化?mysql查询优化的方法介绍
  • 2017-05-11设置MySQL中的数据类型来优化运行速度的实例
  • 2018-12-05mysql 5.5 安装的图文详解
  • 2018-12-05SQL 2005使用专用管理员连接(DAC)的技巧及修改系统表的方法
  • 2018-12-05获取ACCESS2000数据库中所有表的名称
  • 2018-12-05MySQL数据库如何创建存储过程?
  • 2018-12-05CPU资源和可用内存大小对数据库性能有何影响?
  • 2017-05-11Mysql启动中 InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes 的问题

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Oracle中RAISE异常深入分析
    • MySQL中批量删除指定前缀表的sql语句
    • MySQL中3种清除binlog的方法!
    • mysql性能监控工具Innotop简介及配置
    • MySQL 密码增强插件_MySQL
    • MySQL日期数据类型、时间类型使用总结
    • phpMyAdmin下将Excel中的数据导入MySql的图文方法
    • mysql 表的相关操作
    • 讲解更新锁(U)与排它锁(X)的相关知识
    • 如何使用Spring boot操作mysql数据库

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有