zoukankan      html  css  js  c++  java
  • 数据库索引

    定义:索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。

     

    优点与缺点:建立索引的目的是加快对表中记录的查找排序。

          为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。

     

    可以在数据库设计器中创建三种索引:唯一索引、主键索引和聚集索引

     唯一索引 唯一索引是不允许其中任何两行具有相同索引值的索引。

     

      当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。例如,如果在employee表中职员的姓(lname)上创建了唯一索引,则任何两个员工都不能同姓。

     

      主键索引

     

      数据库表经常有一列或列组合,其值唯一标识表中的每一行。该列称为表的主键。

     

      在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问。

     

      聚集索引

     

      在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。

     

      如果某索引不是聚集索引,则表中行的物理顺序与键值的逻辑顺序不匹配。与非聚集索引相比,聚集索引通常提供更快的数据访问速度。

     

    实例:

    CREATE TABLE mytable(

     

      idserial primary key,

     

      category_id int not null default0,

     

      user_id int not null default0,

     

      adddate int not null default0 

      );

    如果在查询时常用类似以下的语句: 

      SELECT * FROM mytable WHERE category_id=1; 

      最直接的应对之道,是为category_id建立一个简单的索引: 

      CREATE INDEX mytable_categoryid ON mytable (category_id);

      SELECT * FROM mytable WHERE category_id=1 AND user_id=2;

      第一反应可能是,再给user_id建立一个索引。不好,这不是一个最佳的方法。可以建立多重的索引。

       CREATE INDEX mytable_categoryid_userid ON mytable(category_id,user_id);

     

    SELECT * FROM mytable 

      WHERE category_id=1 AND user_id=2 

      ORDER BY add date DESC; 

      很简单,就象为where字句中的字段建立一个索引一样,也为ORDERBY的字句中的字段建立一个索引: 

      CREATE INDEX mytable_categoryid_userid_adddate ON mytable (category_id,user_id,adddate);

  • 相关阅读:
    POJ1995 ZOJ2150 Raising Modulo Numbers【快速模幂】
    POJ3641 UVA11287 HDU1905 Pseudoprime numbers【素数判定+快速模幂】
    ACM题解系列之三:秋田拓哉:《挑战程序设计竞赛》(第2版)
    HDU3257 Hello World!【打印图案+位运算】
    ACM题解系列之二:刘汝佳:《算法竞赛入门经典训练指南》
    UVa10881 Piotr's Ants【模拟】
    POJ1852 UVa10714 Ants【水题】
    剑指Offer——平衡二叉树
    剑指Offer——二叉树的深度
    剑指Offer——数字在排序数组中出现的次数
  • 原文地址:https://www.cnblogs.com/lucky_dai/p/2471549.html
Copyright © 2011-2022 走看看