加入收藏 | 设为首页 | 会员中心 | 我要投稿 徐州站长网 (https://www.0516zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2022-10-25 17:01:23 所属栏目:MySql教程 来源:互联网
导读: 一、执行情况查看
EXPLAIN SELECT * FROM STUDENT;
二、查看表索引
SHOW INDEX FROM STUDENT;
额外:Greenplum数据库查看表索引
SELECT * FROM PG_INDEXES WHERE TABLENAME = '[表名]&

一、执行情况查看

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条件直接增加索引mysql表索引,比如 左关联数据字典表条件 DICT.KEY+DICT.DTYPE

CREATE INDEX DICT_DKEY_TYPE_INDEX ON SYS_DICTIONARY (DKEY,DTYPE);

(编辑:徐州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!