码迷,mamicode.com
首页 > 数据库 > 详细

mysql 索引

时间:2015-05-05 12:24:05      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:

一.  B+树索引 (适合高选择性字段,例如性别就是低选择性)

  技术分享

 

  分为聚集索引和辅助索引。聚集索引是根据主键创建的一颗B+树,聚集索引的叶子节点存放了表中的所有记录。

  辅助索引是根据索引键创建的一颗B+树,与聚集索引不同的是,其叶子节点存放索引键,以及索引键指向的主键。

  注意细节: Cardinality查看索引是否是高选择性。可以通过show index from tableName来查看。表示索引中唯一只记录数量的

  预估值。cardinality是一个预估值,应该尽可能接近1,如果非常小,那么就要考虑是否还有建立这个索引了。在访问高选择性属性的字段

     并从表中取出很少一部分数据时,对这个字段添加B+索引是非常有必要的.

 

          技术分享

    技术分享

 

     查看一个表中有几个索引 show index from tablename

    技术分享

    查看你用sql时,使用了那些索引.

    技术分享

    

CREATE TABLE buy_log(
	userid INT UNSIGNED NOT NULL,
	title VARCHAR(20),
	buy_date DATE
)ENGINE=InnoDB;

INSERT INTO buy_log VALUES (1,‘zh‘, ‘2009-01-01‘);
INSERT INTO buy_log VALUES (2,‘zh‘, ‘2009-01-01‘);
INSERT INTO buy_log VALUES (3,‘zh‘, ‘2009-01-01‘);
INSERT INTO buy_log VALUES (1,‘zh‘, ‘2009-02-01‘);
INSERT INTO buy_log VALUES (3,‘zh‘, ‘2009-02-01‘);
INSERT INTO buy_log VALUES (1,‘zh‘, ‘2009-03-01‘);
INSERT INTO buy_log VALUES (1,‘zh‘, ‘2009-04-01‘);

/*添加索引*/
ALTER TABLE buy_log ADD KEY (userid);
ALTER TABLE buy_log ADD KEY (userid,buy_date);  (联合索引)
ALTER TABLE buy_log ADD KEY (userid,title);

ALTER TABLE buy_log DELETE KEY (userid);
/*删除索引 删除联合索引要删除索引名(用show index可以查看)*/
drop index userid ON buy_log;


 

  

     指定索引
   /*USE INDEX(a) 告诉mysql优化器可以选择该索引,选不选还要看优化器自己判断*/
    explain select * from t USE INDEX(a) where a=1 and b=2;
  /*FORCE INDEX(a) 告诉mysql优化器必须选择使用该索引*/
    explain select * from t FORCE INDEX(a) where a=1 and b=2;

  

mysql 索引

标签:

原文地址:http://www.cnblogs.com/shaoshao/p/4478430.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!