首页 > 数据库技术 > 详细

MySQL索引

时间:2016-08-17 23:32:51      阅读:412      评论:0      收藏:0      [点我收藏+]

mysql索引
  注意:创建索引的基本原则
  索引要建在使用比较多的字段上
  尽量不要在相同值比较多的列建立索引,比如性别、年龄等字段
  对于经常进行数据存取的列不要建立索引
  对于有外键引用的表,在主键和外键上建立索引

 
1、普通索引
索引创建的三种方式=====
主键是一种特殊索引
表已创建
 ===help create index;
create index ipaddr_idx on test(ipaddr);
mysql> create index ipaddr_idx on weblog(ipaddr DESC) using btree; ====hash
alter table zzz add index (ipaddr)
mysql> create table stu (id int primary key,name varchar(30),sex enum(‘man‘,‘wom‘),score float(4,1),addr varchar(60),index addr_idx (addr));

drop index ipaddr_idx on test;

 (1)在employees表中查询first_name以Mery开头的所有员工
  (2)在employees表中查询first_name包含mar字符的员工
  (3)在employees表中查询last_name以He开头的员工
  (4)在employees表中查询last_name包含oo字符的员工

  explain select * from employees where first_name like ‘Mery%‘\G
 
  explain select * from employees where first_name like ‘%mar%‘\G


2、唯一索引  =====列值必须唯一,但允许有空值

mysql> create unique index size_idx on weblog(size);


3、全文索引===================用于在char,varchar,text等文本类型的字段中

create fulltext index flname_idx on employees(first_name,last_name);

练习:观察下列查询在没有建立索引前所使用的时间和 索引后所使用的时间,建立索引后下列那些查询没有使用索引。
     

mysql> select * from employees where match(first_name,last_name) against(‘Mary‘)


###############单列索引、多列索引
4、聚集索引
对于innodb存储引擎
如果表里面包含有主键,直接使用主键做聚集索引
  如果没有主键,则将第一个包含not null属性的unique index列作为聚集索引
  如果前两个条件都不满足,则mysql会自动增加一个autoincrement的列作为聚集索引

5、空间索引
索引使用总结:
 (1)索引一般在<,>,<=,>=,between,in以及某些情况下的like等操作符上才能使用
 (2)如果使用like,则%或_不能位于开头
 (3)如果使用多列索引,则第一列必须包含匹配的条件
 (4)如果在列上使用函数则不能使用索引
 <> =============primary key使用索引==其他索引不使用

mysql> explain select * from employees where first_name like ‘o%‘ and last_name like‘m%‘\G

索引的缺点:
  创建索引会占用磁盘空间,尤其是表很大且创建索引的字段值比较多且内容比较长的话更是如此
  对于写入操作,如insert、update、delete等操作,索引会降低它们的速度  

show variables like ‘%query%‘;
mysql> show status like ‘%qcache%‘; ======mysql可以通过缓存查看数据


本文出自 “kenasel” 博客,请务必保留此出处http://kenasel.blog.51cto.com/10620829/1839503

MySQL索引

原文:http://kenasel.blog.51cto.com/10620829/1839503

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!