关于索引

    索引是建立在数据库表中的某些列的上面。在创建索引的时候,应该考虑在哪些列上可以创建索引,在哪些列上不能创建索引。一般来说,应该在这些列上创建索引:

    在经常需要搜索的列上,可以加快搜索的速度;

  在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;  在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;  在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;

  在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。

最普通的情况,是为出现在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名"的方式。

猜你喜欢

转载自bigdragon.iteye.com/blog/1385608
今日推荐