mysql面试(1)

一一个 SQL 执行行行的很慢,我们要分两种情况讨论:1、大大多数情况下很正常,偶尔很慢,则有如下原因
(1)、数据库在刷新脏⻚页,例例如 redo log 写满了了需要同步到磁盘。
(2)、执行行行的时候,遇到锁,如表锁、行行行锁。
2、这条 SQL 语句句一一直执行行行的很慢,则有如下原因。
(1)、没有用用上索引:例例如该字段没有索引;由于对字段进行行行运算、函数操作导致无无法用用索引。
(2)、数据库选错了了索引。

1、定义表的时候,尽量量不不允许字段值为 null,可以用用 default 设置默认值。
2、尽量量用用 union 来代替 or,避免查询没有走走索引。
3、注意,用用 id = null 的等值查询,也是不不会匹配到值为 null 的行行行的,而而是应该用用 id is null。

为什用 B+ 树做索引而而不不用用哈希表做索引?
1、哈希表是把索引字段映射成对应的哈希码然后再存放在对应的位置,这样的话,如果我们要进行行行模
糊查找的话,显然哈希表这种结构是不不支支持的,只能遍历这个表。而而B+树则可以通过最左前缀原则快速
找到对应的数据。
2、如果我们要进行行行范围查找,例例如查找ID为100 ~ 400的人人,哈希表同样不不支支持,只能遍历全表。
3、索引字段通过哈希映射成哈希码,如果很多字段都刚好映射到相同值的哈希码的话,那么形成的索
引结构将会是一一条很⻓长的链表,这样的话,查找的时间就会大大大大增加。

主键索引和非非主键索引有什么区别?

主键索引和非非主键索引的区别是:非非主键索引的叶子子节点存放的是主键的值,而而主键
索引的叶子子节点存放的是整行行行数据,其中非非主键索引也被称为二二级索引,而而主键索引也被称为聚簇索

原文地址:https://www.cnblogs.com/topass123/p/12639559.html