DB:MYSQL索引(创建、删除、查看)

一、执行情况查看

EXPLAIN SELECT * FROM STUDENT;

二、查看表索引

SHOW INDEX FROM STUDENT;

 额外:Greenplum数据库查看表索引

SELECT * FROM PG_INDEXES WHERE TABLENAME = '[表名]';

 三、创建索引

        1、CREATE INDEX [INDEX_NAME] ON [TABLE_NAME] (COLUMN1,COLUMN2,... ...);

CREATE INDEX STUDENT_CLASS_SEX_INDEX ON STUDENT(CLASS,SEX);

        2、ALTER TABLE [TABLE_NAME] ADD INDEX [INDEX_NAME] (COLUMN1,COLUMN2,... ...);

ALTER TABLE STUDENT ADD INDEX STUDENT_CLASS_SEX_INDEX (CLASS,INDEX);

两种区别:

        方法1:必须提供索引名;一个语句一次只能建立一个索引;

        方法2:会自动创建索引名,如果你不提供;可以在一个语句建立多个;

ALTER TABLE STUDENT 
        ADD INDEX STUDENT_CLASS_INDEX (CLASS), 
        ADD INDEX STUDENT_SEX_INDEX (SEX),
        ADD COLUMN ALL_NAME VARCHAR(100) COMMENT '全名',
     MODIFY COLUMN NAME VARCHAR(100);

四、删除索引

DROP INDEX [INDEX_NAME] FROM [TABLE_NAME];
ALTER TABLE [TABLE_NAME] DROP INDEX [INDEX_NAME];

五、一般创建索引的依据

如:需解决SQL查询效率

SELECT STUDENT.NAME AS '学生姓名',
       DICT_SEX.DAVLUE AS '学生性别',
       DICT_LIKE.DAVLUE AS '喜好描述'
  FROM STUDENT_TAB STUDENT
  LEFT JOIN SYS_DICTIONARY DICT_LIKE 
    ON DICT_LIKE.DKEY = SUTDENT.LIKE_OBJ AND DICT_LIKE.DTYPE = 'LIKE'
  LEFT JOIN SYS_DICTIONARY DICT_SEX 
    ON DICT_SEX.DKEY = SUTDENT.SEX AND DICT_SEX.DTYPE = 'SEX'
 WHERE STUDENT.CLASS = '1';

针对以上SQL进行查询效率优化,通过给使用到的表增加索引,达到增加查询效率,也可以自己用 EXPLAIN 查看SQL查询计划看,,当然可以直接给一些类型字段增加索引:

1、给 STUDENT_TAB 表的 CLASS字段增加索引,明显这是一个分类字段;

CREATE INDEX STUDENT_CLASS_INDEX ON STUDENT_TAB (CLASS);

2、给数据字典的分类字段 DTYPE增加索引;

CREATE INDEX DICT_TYPE_INDEX ON SYS_DICTIONARY (DTYPE);

除了上述经常给一些能区分数据,给数据分类的字段增加索引提升速度外,也可以看SQL条件,依据SQL条件直接增加索引,比如 左关联数据字典表条件 DICT.KEY+DICT.DTYPE

CREATE INDEX DICT_DKEY_TYPE_INDEX ON SYS_DICTIONARY (DKEY,DTYPE);


     

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我也不清楚

有钱的捧个钱场,(~ ̄▽ ̄)~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值