MySQL目前主要有的索引类型:
普通索引、唯一索引、主键索引、组合索引、全文索引。MyISAM支持全文索引,InnoDB在mysql5.6之后支持了全文索引。全文索引不支持中文需要借sphinx(coreseek)或迅搜<、code>技术处理中文。
索引的底层结构:
B+树,相比与B树有啥优点:1、B 树一个节点里存的是数据,而 B+树存储的是索引(地址),所以 B 树里一个节点存不了很多个数据,但是 B+树一个节点能存很多索引,B+树叶子节点存所有的数据。2、B+树的叶子节点是数据阶段用了一个链表串联起来,便于范围查找。
索引失效的情况:
1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因),要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引
2.对于多列索引,不是使用的第一部分,则不会使用索引最左匹配原则
3.like查询以%开头
4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
5.如果mysql估计使用全表扫描要比使用索引快,则不使用索引
聚簇索引和非聚簇索引:
MyISAM 引擎把数据和索引分开了,一人一个文件,这叫做非聚集索引方式;Innodb 引擎把数据和索引放在同一个文件里了,这叫做聚集索引方式。
mysql的隔离级别:
READ-UNCOMMITTED(读取未提交)、READ-COMMITTED(读取已提交)、REPEATABLE-READ(可重复读)、SERIALIZABLE(可串⾏化);InnodB使用的默认事务隔离级别都是REPEATABLE-READ(可重复读,只允许读取已经提交的事务的记录),但是在这个基础上增加了Next-Key Lock 锁算法,所以只需要使用该事务隔离级别就可以达到ACID的隔离级别,也就是和可串行化一样
ACID(原子性、隔离性、持久性)最终都是为了保持数据库数据的一致性服务的
mysql的锁的问题把MySQL中的各种锁及其原理都画出来
一条更新语句在mysql里面怎么执行
一条更新语句在mysql里面怎么执行
怎么对mysql进行优化
方式一:慢查询日志
方式二:mysql>show processlist,查看当前MySQL在进行的线程,包括线程的状态、是否锁表等,可以实时地查看 SQL 的执行情况
找到效率低的sql后,explain分析执行计划;
对于查询效率而言,结果值从最好到最坏依次是:system > const > eq_ref > ref > range > index > ALL;一般来说, 我们需要保证查询至少达到 range 级别, 最好达到ref 。
possible_keys:显示可能应用在这张表的索引, 一个或多个。
key:实际使用的索引, 如果为NULL, 则没有使用索引。
key_len:表示索引中使用的字节数, 该值为索引字段最大可能长度,并非实际使用长度,在不损失精确性的前提下, 长度越短越好 。
rows:扫描行的数量。
extra:其他的额外的执行计划信息。几个重要的标识如下表
面试总结答题篇
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- update time 2021年7月14日11点57分 ,阅读时间30分钟, 文章版本:V 1.5。主要收集在面...
- 写于之前:1、Java技术体系庞大且繁杂,各公司的面试要求和侧重点也会有所不同,本文仅列举了笔者认为比较常见及重要...