day07-2MySQL索引( 二 )

  • 对dml(update delete insert)语句的效率影响
  • 虽然索引对dml语句效率有影响,但是在项目开发中绝大多数操作是select,利大于弊
    2.索引的使用
    • 索引的类型
    1. 主键索引,主键自动地为主键索引(类型 primary key)
    2. 唯一索引(unique),unique索引
    3. 普通索引(index)
    4. 全文索引(fulltext)[适用于MylSAM]
      一般开发不使用mysql自带的全文索引,而是使用:全文搜索 Solr 和 ElasticSearch(ES)
    • 语法
    1. 创建索引
      方法一:
      create [unique] index index_name on table_name(col_name[(length)] [asc|desc],...);方法二:
      alter table table_name add index [index_name] (index_col_name,...);
    2. 【day07-2MySQL索引】添加主键索引
      alter table 表名 add primary key(列名,...);
    3. 删除索引
      DROP INDEX id_name ON table_name;alter table table_name drop index index_name;
    4. 删除主键索引
      ALTER TABLE table_name DROP PRIMARY KEY;
    5. 查询索引(三种方式)
      show index(es) from table_name;show keys from table_name;desc table_name;
    例子
    -- 演示mysql索引的使用-- 创建索引CREATE TABLE t25( id INT, `name` VARCHAR(32));-- 1.查询表是否有索引SHOW INDEXES FROM t25;-- 2.添加索引-- 2.1添加唯一索引CREATE UNIQUE INDEX id_index ON t25 (id);-- 2.2添加普通索引CREATE INDEX name_index ON t25 (`name`);-- 如何选择?-- 如果某列的值不会重复,则优先考虑使用unique索引,否则使用普通索引-- 添加普通索引方式2ALTER TABLE t25 ADD INDEX id_index (id);-- 2.3添加主键索引CREATE TABLE t26( id INT, `name` VARCHAR(32));ALTER TABLE t26 ADD PRIMARY KEY(id);SHOW INDEXES FROM t26;-- 删除索引DROP INDEX id_index ON t25;DROP INDEX name_index ON t25;-- 删除主键索引ALTER TABLE t26 DROP PRIMARY KEY;-- 修改索引:先删除,再添加新的索引-- 查询索引-- 方式1SHOW INDEX FROM t25;-- 方式2SHOW INDEXES FROM t25;-- 方式3SHOW KEYS FROM t25;-- 方式4DESC t25;
    • 练习

    day07-2MySQL索引

    文章插图
    day07-2MySQL索引

    文章插图
    day07-2MySQL索引

    文章插图
    3.小结那些列上适合使用索引?
    1. 较频繁地作为查询条件的字段应该创建索引
    2. 唯一性太差的字段不适合单独创建索引
    3. 更新非常频繁的字段不适合创建索引
    4. 不会出现在where子句中的字段不该创建索引

    经验总结扩展阅读