1.mysql中主键与索引区别与联系
关系数据库依赖于主键,它是数据库物理模式的基石。主键在物理层面上只有两个用途:
惟一地标识一行。
作为一个可以被外键有效引用的对象。
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。下面是主键和索引的一些区别与联系。
参考:https://www.cnblogs.com/ybygb-geng/p/9574169.html
2.什么时候索引会失效
- 如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)。(要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引)
- 对于多列索引,不是使用的第一部分,则不会使用索引(即不符合最左前缀原则)
- like查询是以%开头
- 如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
- 如果mysql估计使用全表扫描要比使用索引快,则不使用索引
3.mysql中InnoDB表为什么要建议用自增列做主键(为什么主键要有序而不是随机数)
参考:https://blog.csdn.net/wukong_666/article/details/54982712
4.mysql中innodb和myisam的区别
参考:https://blog.csdn.net/qq_27607965/article/details/79925288
5.MySql为何默认不用hash索引而用BTree索引的几点原因
参考:https://blog.csdn.net/ycllycll/article/details/101307626
6.mysql索引最左匹配原则的理解
参考:https://blog.csdn.net/u013164931/article/details/82386555