如何创建索引

2017-10-09  本文已影响13人  小炉炉

索引通俗点讲就好比是书中的目录一样,能加快检索者的观看速度。
那么如何创建索引,就显的十分重要。
首先创建索引,就需要先 创建表:

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名"的方式。很快就会知道为什么这样做了。

现在已经为适当的字段建立了索引,不过,还是有点不放心吧,可能会问,数据库会真正用到这些索引吗?测试一下就OK,对于大多数的数据库来说,这是很容易的,只要使用EXPLAIN命令:

EXPLAIN

SELECT * FROM mytable

WHERE category_id=1 AND user_id=2;

This is what Postgres 7.1 returns (exactlyasI expected)

NOTICE:QUERY PLAN:

Index Scan using mytable_categoryid_useridon

mytable(cost=0.00..2.02 rows=1 width=16)

EXPLAIN
上一篇 下一篇

猜你喜欢

热点阅读