索引

来自百度百科的解释:

  在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,

  它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。

  索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容(解释的相当到位!)

  索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引以找到特定值,然后顺指针找到包含该值的行。这样可以使对应于表的SQL语句执行得更快,可快速访问数据库表中的特定信息。
 
  当表中有大量记录时,若要对表进行查询
    第一种是全表搜索,将所有记录一一取出,和查询条件进行一一对比,返回满足条件的记录,这样做消耗大量数据库系统时间,并造成大量磁盘I/O操作;
    第二种是在表中建索引,再在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。
 
在数据库系统中建立索引主要有以下作用:
(1)快速取数据;
(2)保证数据记录的唯一性;
(3)实现表与表之间的参照完整性;
(4)在使用order by、group by子句进行数据检索时,利用索引可以减少排序和分组的时间。(order by 和group by)
 
常见的索引:
  1、主键约束(不能为null,不能重复)alter table table_name add primary key (column name);
  2、唯一约束(数据唯一,不重复)create table d(id int primary key auto_increment , name varchar(32) unique) ;
  3、普通索引的唯一任务是加快对数据的访问速度。因此,应该只为最经常出现在查询条件(WHERE)或排序条件(ORDERBY)中的数据列创建索引。 
    create index index_name on table_name(column1,column2);  alter table table_name add index 索引名(column1,column2);
  4、全文索引
  
  1、2、3用得比较多……
 
  关于索引的使用感受:当数据量大,或者多表连接查询时,常常不注意查询效率直接写SQL,使得查询速度很慢(我们想的是只要把结果查出来就好,从来不关注查询效率)。加上索引,以及正确的使用它,真的速度会快很多很多!这样的SQL才是优秀的SQL!


原文地址:https://www.cnblogs.com/CatcherLJ/p/11770083.html