索引的知识要点与操作

  • 要点
  1. 对单个字段做索引,也可以对多个字段做索引(联合索引),联合索引只有最后一个字段支持"<" ">"操作。
  2. 虽然索引可以建很多个,但是每个一个索引都会增加存储和插入时候资源开销。
  3. SQL执行只会使用到一个索引。(这解释了为什么需要联合索引,而不只是对多个字段创建索引)
  4. 如果SELECT的结果也在索引上,执行效率最高,也称为覆盖索引。(但是对长串字符做索引可能得不偿失)
  • 操作
ALTER TABLE `xxx`.`xxx` DROP INDEX `server_id`, ADD INDEX `idx_server_record` (`server_id`, `record_time`) USIN G BTREE; 
  • EXPLAIN中type字段说明

    const:表示通过索引一次就找到数据,用于比较primary key或者unique索引,很快就能找到对应的数据;

    eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配,常用于主键或唯一索引扫描;

    ref:非唯一索引扫描,返回匹配的所有行,如建立一个朋友维护表,维护用户对应的朋友,而在用户ID建立非唯一索引;

    range:使用一个索引检索指定范围的行,一般在where语句中会出现between、<、>、in等范围查询;

    index:全索引扫描,只遍历索引树;

    ALL:全表扫描,找到匹配行。与index比较,ALL需要扫描磁盘数据,index值需要遍历索引树。

posted @ 2024-04-28 10:28  武平宁  阅读(3)  评论(0编辑  收藏  举报