MySql的索引

什么是索引:

  索引就是一个数据结构,我们把表中的记录用一个适合高效查找的数据结构来表示,目的就是让查询变得更高效。

索引的优点:

  索引大大减少了服务器需要扫描的数据量
  索引可以帮助服务器避免排序和临时表
  索引可以将随机I/O变成顺序I/O

索引的缺点:

  索引是占用空间的.
  索引会影响update insert delete速度

索引的分类

  1. FULLTEXT
  即为全文索引,目前只有MyISAM引擎支持。其可以在CREATE TABLE ,ALTER TABLE ,CREATE INDEX 使用,不过目前只有 CHAR、VARCHAR ,TEXT 列上可以创建全文索引。全文索引并不是和MyISAM一起诞生的,它的出现是为了解决WHERE name LIKE “%word%"这类针对文本的模糊查询效率较低的问题。
  2. HASH
 由于HASH的唯一(几乎100%的唯一)及类似键值对的形式,很适合作为索引。
 HASH索引可以一次定位,不需要像树形索引那样逐层查找,因此具有极高的效率。但是,这种高效是有条件的,即只在“=”和“in”条件下高效,对于范围查询、排序及组合索引仍然效率不高。
 3. BTREE
 BTREE索引就是一种将索引值按一定的算法,存入一个树形的数据结构中(二叉树),每次查询都是从树的入口root开始,依次遍历node,获取leaf。这是MySQL里默认和最常用的索引类型。
  • 普通索引:仅加速查询
  • 唯一索引:加速查询 + 列值唯一(可以有null)
  • 主键索引:加速查询 + 列值唯一(不可以有null)+ 表中只有一个
  • 组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并
  • 全文索引:对文本的内容进行分词,进行搜索

索引的操作

  • 创建索引
    --创建普通索引
    CREATE INDEX index_name ON table_name(col_name);
    --创建唯一索引
    CREATE UNIQUE INDEX index_name ON table_name(col_name);
    --创建普通组合索引
    CREATE INDEX index_name ON table_name(col_name_1,col_name_2);
    --创建唯一组合索引
    CREATE UNIQUE INDEX index_name ON table_name(col_name_1,col_name_2);
  • 修改表结果创建索引
    ALTER TABLE table_name ADD INDEX index_name(col_name);
  • 创建表时直接指定索引
    CREATE TABLE table_name (
    ID INT NOT NULL,col_name VARCHAR (16) NOT NULL,INDEX index_name (col_name)
    );
  • 删除索引
    --直接删除索引
    DROP INDEX index_name ON table_name;
    --修改表结构删除索引
    ALTER TABLE table_name DROP INDEX index_name;
  • 查看索引
    show index from table_name;
    参考:https://blog.csdn.net/liutong123987/article/details/79384395
posted @ 2020-06-11 21:40  测试爬虫  阅读(135)  评论(0编辑  收藏  举报