最普通的情况,是为出现在where子句的
字段建一个
索引。为方便讲述,先建立一个如下的表。
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);
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名"的方式。很快就会知道为什么这样做了。