PS:聚簇索引唯一,唯一索引每个值唯一

    聚簇索引(Clustered Index)和非聚簇索引 (Non- Clustered Index)
    最通俗的解释是:聚簇索引的顺序就是数据的物理存储顺序,而对非聚簇索引的索引顺序与数据物理排列顺序无关。举例来说,你翻到新华字典的汉字“爬”那一页就是P开头的部分,这就是物理存储顺序(聚簇索引);而不用你到目录,找到汉字“爬”所在的页码,然后根据页码找到这个字(非聚簇索引)。


    聚簇索引在SQL Sever中可以自定义,指令如下:(*默认值)

    1. CREATE [UNIQUE] [CLUSTERED] INDEX ON <table name>(column [*ASC,DESC]);

    由于环境是mysql8,因此在创建时没有CLUSTERED选项,便感到疑惑
    于是上网康了大神的博客以后https://www.cnblogs.com/jiawen010/p/11805241.html
    发现聚簇索引不过是一种机制,而mysql作为保姆级DMS将该选项简化(可能是为了方便入门者)
    而博客指出:mysql是多引擎的DMS,因此主要的引擎包括*InnoDB和MyISAM

    show engines;# —查看当前默认引擎
    

    1.1、更改方式1:修改配置文件my.ini
    将my-small.ini另存为my.ini,在[mysqld]后面添加default-storage-engine=InnoDB,重启服务,数据库默认的引擎修改为InnoDB
    1.2、更改方式2:在建表的时候指定
    建表时指定:

    create table mytbl( id int primary key, name varchar(50) )type=MyISAM;
    

    2.3、更改方式3:建表后更改

    alter table mytbl2 type = InnoDB;
    

    Innodb会默认隐式创建聚簇索引以提升查询效率,减少内存碎片(像栈一样压在一起)

    无论是SQL Server还是Mysql,默认主键行为都为聚簇索引。(所以在SQL Server上可以讨论优化性能的问题)

    对于Mysql的使用者只能被动地交给InnoDB来处理INDEX方面的性能问题

    从这个方面来看,SQL Server更像是用户来控制性能
    MySQL倾向与被引擎控制定义方法,放在这个问题上,就是
    “建议主键附带自增约束”


    初学者最大的误区:把主键自动设为聚簇索引
    因为这是SQLServer的默认主键行为,你设置了主键,它就把主键设为聚簇索引,而一个表最多只能有一个聚簇索引,所以很多人就把其他索引设置为非聚簇索引。这个是最大的误区。甚至有的主键又是无意义的自动增量字段,那样的话Clustered index对效率的帮助,完全被浪费了。

    https://blog.csdn.net/wen_3370/article/details/56667906