【MySql】索引

原创 2016年05月30日 20:41:34


        MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。
打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。
       索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索包含多个列。
       创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为WHERE 子句的条件)。
实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。
       上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
       建立索引会占用磁盘空间的索引文件。
创建索引
        这是最基本的索引,它没有任何限制。它有以下几种创建方式:
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 INT NOT NULL, usernameVARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) ); 


删除索引的语法

      DROP INDEX [indexName] ON mytable; 
        MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。
打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。
       索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索包含多个列。
       创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为WHERE 子句的条件)。
实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。
       上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
       建立索引会占用磁盘空间的索引文件。
创建索引
        这是最基本的索引,它没有任何限制。它有以下几种创建方式:
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 INT NOT NULL, usernameVARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) ); 


删除索引的语法

      DROP INDEX [indexName] ON mytable; 

版权声明:那些你不愿意做的事情才能让你真正成长

Mysql 索引问题-日期索引使用

这两天发现原来的查询效率慢了,使用explain 查看,居然没有使用索引, 我的索引是日期类型的,首先想到的是mysql对日期类型的索引的处理机制是不是不同,在where条件里试了几种,发现效果都差...
  • spider_zhcl
  • spider_zhcl
  • 2016年11月24日 18:02
  • 7797

MySql_添加索引

9.1 索引简介       索引是一个单独的存在磁盘上的数据结构,他们包含着对数据表列的所有记录的引用的指针,使用索引可以快速的查找出某个或多个列中有特定值的行       索引是在存储引擎上实...
  • wbj1992
  • wbj1992
  • 2017年03月19日 15:35
  • 575

MYSQL分区及索引

MYSQL分区介绍: http://lehsyh.iteye.com/blog/732719 个人认为主要使用RANGE分区 MYSQL索引介绍:...
  • woshichengchaoa
  • woshichengchaoa
  • 2014年04月06日 01:06
  • 1284

Mysql关联表查询的索引

问题     昨天,用户反映我们系统的一个功能效率很低,每次点击需耗时很久。     对代码跟踪分析,发现主要问题出在一个关联表的查询,该操作需要执行该语句20次左右,每次约0.2s左右,累积...
  • xueqifz
  • xueqifz
  • 2012年09月14日 17:25
  • 690

mysql添加删除索引

mysql添加删除索引
  • chenhualeguan
  • chenhualeguan
  • 2015年11月06日 09:50
  • 4612

mysql设计索引的原则与索引的选择

索引是提升数据库性能最直接的手段,如果没有索引,mysql必须从第1条记录开始然后读完整个表直到找出相关的行.表越大花费的时间越多.           mysql中的MyISAM和InnoDB存储...
  • fly_zhyu
  • fly_zhyu
  • 2017年06月21日 11:26
  • 274

自己实现mysql “函数索引”

对于带有列的函数计算的SQL,MySQL 是无法使用索引的,MySQL并没有Oracle中的函数索引, 例如: SELECT * FROM table_1 WHERE func_1(col...
  • gua___gua
  • gua___gua
  • 2015年06月09日 17:18
  • 3505

mysql 时间索引失效

项目中查询时间断的数据发现查询时间很长。怀疑没有走时间的索引,于是explain一下 EXPLAIN select * from t_order where created_at>'2015-01-...
  • kelindame
  • kelindame
  • 2017年02月23日 12:45
  • 4025

MySql 创建索引原则

为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引。本小节将向读者介绍一些索引的设计原则。   1.选择唯一性索引   唯一性索引的值是唯一的,可以更快速的通过该...
  • CSDNones
  • CSDNones
  • 2015年12月27日 15:41
  • 2164

paip.提升性能--- mysql 建立索引 删除索引 很慢的解决.

paip.提升性能--- mysql 建立索引 删除索引 很慢的解决. 作者Attilax ,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http:...
  • attilax
  • attilax
  • 2013年08月25日 11:46
  • 3474
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【MySql】索引
举报原因:
原因补充:

(最多只允许输入30个字)