MySQL中的索引问题

1.索引是什么?

  索引(Index)是帮助MySQL高效获取数据的数据结构。

  索引就是数据结构,排好序的快速查找数据结构。

2.索引怎么分类?

①单值索引

概念:即一个索引只包含单个列,一个表可以有多个单列索引。

②唯一索引

概念:索引列的值必须唯一,但允许有空值。

③主键索引

概念:设定为主键后数据库会自动建立索引,innodb为聚簇索引。

④复合索引

概念:即一个索引包含多个列。

3.索引的创建、查看、删除

操作

命令

创建

CREATE  [UNIQUE ]  INDEX [indexName] ON table_name(column))

删除

DROP INDEX [indexName] ON mytable;

查看

SHOW INDEX FROM table_name\G

使用Alter命令

ALTER TABLE tbl_name ADD PRIMARY KEY (column_list) : 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。

ALTER TABLE tbl_name ADD PRIMARY KEY (column_list)

ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出现多次。

ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引。

4.索引的创建时机

① 适合创建索引的情况

  • 主键自动建立唯一索引;
  • 频繁作为查询条件的字段应该创建索引
  • 查询中与其它表关联的字段,外键关系建立索引
  • 单键/组合索引的选择问题, 组合索引性价比更高
  • 查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度
  • 查询中统计或者分组字段
  • 表记录太少
  • 经常增删改的表或者字段
  • Where条件里用不到的字段不创建索引
  • 过滤性不好的不适合建索引

②不适合创建索引的情况

  • 表记录太少
  • 经常增删改的表或者字段
  • Where条件里用不到的字段不创建索引
  • 过滤性不好的不适合建索引

5.explain性能分析

  使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。

  用法: Explain+SQL语句。

6.索引有效的原则

  ①全值匹配我最爱;

  ②最佳左前缀法则。

 

MySQL中的索引问题

上一篇:前端基础功能,原生js实现轮播图实例教程


下一篇:文件上传