关于索引

本文介绍了如何通过创建有效的索引提高数据库查询效率。包括在频繁使用的搜索列、主键列、连接列等创建索引的方法,并举例说明了单列索引和复合索引的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

  在经常使用在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名"的方式。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值