mysql数据库-索引

        索引是一种特殊文件包含着所有记录所使用的指针。就像一本书的目录一样,加快书的检索速度。数据库如果没有索引的话几乎是不能使用的。曾有人戏称,如果使用索引的mysql是一辆兰博基尼的话,没有使用索引顶多就是一个人力三轮。


      索引分为聚簇索引和非聚簇索引。聚簇索引提高多行的检索速度,非聚簇索引提高单行数据的检索速度。在数据库的功能中,可以建立三种索引:唯一索引,主键索引和聚集索引。


      普通索引是一种没有任何限制的索引,其建立过程:CREATE INDEX index_name ON table(column(col_name));它是MYIASM数据库引擎默认的BTREE类型的索引。使用navicat导出mysql数据库脚本的时候经常会看到这样的字段。


   唯一索引是在普通索引的基础上保证索引列的值必须唯一,除主键外可以有空值。建立过程:

   CREATE UNIQUE INDEX indexName ON table(column(length))


索引的利弊:

    

    索引大大提高查询与排序速度,但是会小号数据保存与更新效率。索引需要生成索引文件,当大量使用组合索引的话,索引文件就会迅速膨胀。 针对这些问题,提出了以下优化方法:


 1. 何时使用聚集索引或非聚集索引?

动作描述使用聚集索引使用非聚集索引
列经常被分组排序使用使用
返回某范围内的数据使用不使用
一个或极少不同值不使用不使用
小数目的不同值使用不使用
大数目的不同值不使用使用
频繁更新的列不使用使用
外键列使用使用
主键列使用使用
频繁修改索引列不使用使用
2. 使用短索引列。

    索引列如果使用varchar(255)的话会让索引文件变大,不利于检索,这255个字符中前10或20个字符能够保证索引唯一的话,就使用这些字段作为索引列即可。


3. like语句

    在数据库操作中不建议使用like语句,但费用不可时,like"%aaa%"不会使用索引而like“aaa%”则可以使用索引。


4. 不要再索引列执行运算,这样会导致索引失效。


5. 使用越小越简单的数据类型越好;尽量避免null;


6. 组合索引仅能对索引最左边的索引进行有效查询。如:

    索引列为c1,c2,以下查询语句有效:

    select * form table where c1=1 and c2=2;

    select * from table where c1=1;

    

    但对于一下查询语句是无效的:

    select * from table where c2=2;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值