数据库索引

索引
 数据库索引好比是一本书前面的目录,能加快数据库的查询速度。   
    例如这样一个查询:select * from table1 where id=44。如果没有索引,必须遍历整个表,直到ID等于44的这一行被找到为止;有了索引之后(必须是在ID这一列上建立的索引),直接在索引里面找44(也就是在ID这一列找),就可以得知这一行的位置,也就是找到了这一行。可见,索引是用来定位的。   索引分为聚簇索引和非聚簇索引两种,聚簇索引 是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。


概述
 建立索引的目的是加快对表中记录的查找或排序。   
    为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。所以经常改动的表最好不要设置索引。

 

创建索引
 最普通的情况,是为出现在where子句的字段建一个索引。为方便讲述,先建立一个如下的表。   
    CREATETABLEmytable(   
       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);   
    OK.如果有不止一个选择条件呢?例如:   
    SELECT * FROM mytable WHERE category_id=1 AND user_id=2;   
    第一反应可能是,再给user_id建立一个索引。不好,这不是一个最佳的方法。可以建立多重的索引。   
    CREATE INDEX mytable_categoryid_userid ON mytable(category_id,user_id);   
    注意到在命名时的习惯了吗?使用"表名_字段1名_字段2名"的方式。很快就会知道为什么这样做了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值