mysql索引类型-形式-使用时机-不足之处--注意事项

一、索引的类型

1、普通索引   增加 create  index  index_name on table(colume(length));

例子:create index index_order_no on t_insruance_new_order(order_no(20))

删除 drop index index_name on table_name /alter table table_name drop index index_name

2、唯一索引   create unique  index  index_name on table(colume(length));

3、主键索引   主键默认就有索引

4、全文索引   fulltext

5、组合索引   create index index_name_age on t_insruance_new_order_no(name(20),age) //缩小索引的长度可以增加insert的速度

组合索引可以是---name,age或者name ,但是不能是age(遵循"最左前缀原则")

-----索引方法:b_tree和hash方法,通常使用b-tree,hash索引,是进行hash处理后的hash值,大小无顺序,但是效率大于B-tree,因为b-tree是从根节点往枝节点,在到叶节点效率比较低

二、索引的形式

1、单列索引,多列索引   查询时候,mysql只能执行一个索引,所以多列索引会找出这几个索引中限制最高的一个索引,进行查询

三、使用索引的时机

一般来说,在where和join中需要创建索引,但是也不完全是,因为mysql只对> ,>=,  =,<=,<,between,in 和一些like时候才使用索引,

例子:使用like时候要特别注意这一点

对于like来说,使用通配符号(%或者_)开头时候不会使用索引

select  * from mytable where name like "%俊";  不会使用索引

select *  from mytable where name like "杨%";  会使用索引

四、索引的不足之处

1、建立索引会增加查询的速度,会降低更新表的速度,更新表(update.delete.insert.)对表格进行更新的同时,还会对索引文件进行更新

2、建立索引会占用磁盘空间的索引文件,一般情况下不会有太大问题,但是在一个大数据表格中,创建了多种组合索引,索引文件会膨胀的很         快。

五、使用索引的注意事项

1、有null值的列,索引失效,所以创建索引的列默认为非null

2、使用短索引,可以提高检索速度,还可以减少磁盘空间和io操作

3、索引列的排序,mysql查询只使用一个索引,所以多个索引查询只有用一个最严格的索引,为了提升查询的效率可以添加组合索引,

4、like模糊查询,通配符放在最前面,索引失效

5、不要在列上进行计算 select *  from mytable where date(time)>‘2007‘;索引失效---where time>‘2007-01-01‘

6、不适用not in和 <>操作

时间: 2024-10-12 02:23:58

mysql索引类型-形式-使用时机-不足之处--注意事项的相关文章

MySQL索引类型&建立索引的时机&索引的不足之处

MySQL索引类型包括: 1.普通索引 这是最基本的索引,它没有任何限制.它有以下几种创建方式: ◆创建索引 CREATE INDEX indexName ON mytable(username(length)); 如果是CHAR,VARCHAR类型,length可以小于字段实际长度:如果是BLOB和TEXT类型,必须指定 length,下同. ◆修改表结构 ALTER mytable ADD INDEX [indexName] ON (username(length)) ◆创建表的时候直接指定

MySQL索引类型及优化

索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable表: CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL ); 我们随机向里面插入了10000条记录,其中有一条:5555, admin. 在查找username="admin"的记录 SELECT *

MySQL索引类型总结和使用技巧以及注意事项

      索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable表: CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL ); 我们随机向里面插入了10000条记录,其中有一条:5555, admin. 在查找username="admin"的记录 SEL

MySQL索引类型一览 让MySQL高效运行起来

索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable表: CREATE TABLE mytable(   ID INT NOT NULL,    username VARCHAR(16) NOT NULL  );   我们随机向里面插入了10000条记录,其中有一条:5555, admin. 在查找username="admin"的记录

MySQL索引类型一览 让MySQL高效运行起来(转)

转自:http://www.php100.com/html/webkaifa/database/Mysql/2010/0409/4279.html 索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable表: CREATE TABLE mytable(   ID INT NOT NULL,    username VARCHAR(16) NOT NUL

MySQL索引类型 &amp; Mysql索引会失效的几种情况分析

MySQL索引类型介绍 (1)普通索引 这是最基本的索引,它没有任何限制.它有以下几种创建方式: CREATE INDEX indexName ON mytable(username(length)); 如果是CHAR,VARCHAR类型,length可以小于字段实际长度:如果是BLOB和TEXT类型,必须指定 length,下同. ALTER mytable ADD INDEX [indexName] ON (username(length)) CREATE TABLE mytable( ID

MySQL索引类型总结和使用技巧

引用地址:http://www.jb51.net/article/49346.htm 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable表: 复制代码 代码如下: CREATE TABLE mytable(   ID INT NOT NULL,    username VARCHAR(16) NOT NULL  ); 我们随机向里面插入了10000条记录,其中有一条:5555, admin. 在查找username="admin"的记录 SELECT

mysql索引类型说明

btree和hash Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引. 可能很多人又有疑问了,既然 Hash 索引的效率要比 B-Tree 高很多,为什么大家不都用 Hash 索引而还要使用 B-Tree 索引呢?任何事物都是有两面性的,Hash 索引也一样,虽然 Hash 索引效率高,但是 Hash 索引本身由于其特殊性也带来了很

mysql索引类型和索引方法

索引类型 mysql索引类型normal,unique,full text的区别是什么? normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique full textl: 表示 全文搜索的索引. FULLTEXT 用于搜索很长一篇文章的时候,效果最好.用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以. 总结,索引的类别由建立索引的字段内容特性来决定,通常normal最常见. MySQL目前主要有以