mysql数据库-索引

原创 2016年08月29日 22:54:44

        索引是一种特殊文件包含着所有记录所使用的指针。就像一本书的目录一样,加快书的检索速度。数据库如果没有索引的话几乎是不能使用的。曾有人戏称,如果使用索引的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;



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Oracle与MySQL数据库索引设计与优化

  • 2017年10月26日 08:53
  • 58.51MB
  • 下载

MySQL数据库(索引的操作)

在MySQL数据库中,数据库对象表是存储和操作数据的逻辑结构。 数据库对象索引是一种有效组合数据的方式。通过索引对象,可以快速查询到数据库对象表中的特定记录,是一种提高性能的常用方式。 一个索引会包含...

查看mySQL数据库索引

  • 2014年04月11日 11:41
  • 22KB
  • 下载

solr5.3+tomcat-7.0.65 solr从mysql数据库导入数据并创建索引

1,创建一张用户表t_u_user 2,先创建4个比较常用的字段,id,user_name,sex,salary 3,copy导入的jar,如图 4,复制一个mysql驱动jar,...

mysql数据库索引优化.doc

  • 2010年11月24日 19:18
  • 35KB
  • 下载

mysql数据库的索引分析和优化

一、什么是索引?   索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记...

lucene创建索引并搜索mysql数据库

lucene结合数据库步骤 1:写一段传统的JDBC程序,将每条的用户信息从数据库读取出来 2:针对每条用户记录,建立一个lucene document  Document doc = new D...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql数据库-索引
举报原因:
原因补充:

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