1.索引有哪些MySQL的索引有两种分类方式:逻辑分类和物理分类。
按照逻辑分类:
主键索引:一张表只能有一个主键索引,不允许重复,不允许为null;
唯一索引:数据列不允许重复,允许为NULL值,一张表可有多个唯一索引,但是一个唯一索引只能包含
一列,比如身份证号码,卡号都可以作为唯一索引;
普通索引:一张表可以创建多个普通索引,一个普通索引可以包含多个字段,允许数据重复,允许NULL值插入;
全文索引:让搜索关键词更高效的一种索引;
按照物理分类:
聚集索引:一般是表中的主键索引,如果表中没有显示指定主键,则会选择表中的第一个不允许为NULL的唯一索引,如果还是没有的话,就采用Innodb存储引擎为每行数据内置的6字节rowid作为聚集索引。每张表只有一个聚集索引
非聚集索引:该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同(非主键的那一列),一个表中可以拥有多个非聚集索引;
2.mysql引擎知道哪些?有什么区别?InnoDB 存储引擎:
o 支持自增长列(auto_increment),自增长列的值不能为空,如果在使用的时候为空的话就会从现有的最大值自动+1,如果有但是比现在的还大,则就保存这个值。支持外键(foreignkey), 支持事务,回滚以及系统崩溃的修复能力,并且支持多版本并发控制的事务安全。支持的行级锁,就是通过多版本控制来实现的乐观锁,索引使用的是B+Tree
优缺点:InnoDB的优势在于提供了良好的事务处理、崩溃修复能力和并发控制。缺点是读写效率较差,占用的数据空间相对较大。
MyISAM 存储引擎
不支持事务、支持表级锁,支持全文搜索,缓冲池只缓存索引文件,不缓存数据文件 MyISAM 存储引擎表由数据文件(MYD)和索引文件( MYI)组成
我们项目中常用到的是innoDB,InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全,但是对比Myisam的存储引擎InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
3.mysql如何查看索引是否生效?1.使用SHOW indexs命令查看表的索引信息。例如,执行"SHOW INDEXES FROM table_name;"命令可以查看表的索引情况。
2.使用EXPLAIN命令查看SQL语句的执行计划。例如,执行"EXPLAIN SELECT * FROM